2016-06-21 14 views
10

Ich muss meinen MVC-Prozess aktualisieren, um externen OAuth-Prozess zu ermöglichen, wie in Lernprogrammen wie this one beschrieben. Jedes Tutorial, das ich finde, verwendet facebook/twitter/Microsoft, das bereits in Funktionen eingebaut ist. Ich muss einen anderen Server verwenden und ein Token übergeben. Und ich bin ein Client, nicht ein Server.Wie verwende ich externe OAuth-Autorisierung in einem MVC-Projekt, das nicht twitter, facebook oder microsoft ist?

Mein Setup verwendet das Standard-SPA-Projekt mit einem Login usw. Ich muss es auf eine Seite mit dem Refresh-Token umleiten lassen und dieses Refresh-Token für meine zukünftigen Anfragen an eine API speichern. Ich habe damit kein Problem, ich kann einfach den ersten OAuth-Aufruf nicht machen. Und es scheint, dieses Problem zu haben.

Für diese Anforderung an den OAuth 2.0-Provider muss ich der Anforderung ein Zugriffstoken hinzufügen. Anschließend kann sich der Benutzer anmelden und auf "allow/deny" klicken.

POST {TokenPath} HTTP/1.1 
Host: {AuthorizationServer} 
Authorization: Basic {ThirdPartyAuthorizationCode} 
Content-Type: application/x-www-form-urlencoded 

grant_type = authorization_code 

Dann bekomme ich eine Antwort vom POST mit access_token und einem Ablaufdatum.

Also, wie kann ich das tun?

+0

Siehe: http: // www.oauthforaspnet.com/ –

+0

@ BrendanGreen Hallo Brendan, danke, aber keiner dieser Anbieter sind diejenigen, die ich suche, um zu verbinden. Es ist ein interner Server. Vielen Dank! – Kat

+0

Siehe: [ASP.Net MVC: Erstellen eines Token-Endpunkttyps für die OAuth-Kennwortvergabe] (http://www.hackered.co.uk/articles/asp-net-mvc-creating-an-oauth-password-grant-type -token-endpoint) Ich habe das schon mal gemacht (in einer anderen Situation) also wenn dieser Artikel nützlich ist lass es mich wissen um meinen ganzen Code als Antwort zu posten – Hameds

Antwort

3

Sie können OAuth-Token von Drittanbietern auf Apigee verwenden. Token Zur Nutzung von Drittanbieter-OAuth-Systeme in Apigee Rand, müssen Sie diese Dinge tun:

die OAuthV2 Richtlinie konfigurieren, die Token mit dem < ExternalAuthorization> -Element auf true gesetzt erzeugt. Wenn dieses Element falsch oder nicht vorhanden ist, überprüft Edge die client_id- und client_secret-Dateien normalerweise gegen den Apigee Edge-Autorisierungsspeicher. Setzen Sie die interne Flussvariable oauth_external_authorization_status auf true. Wenn dieser Wert falsch ist (oder wenn die Variable nicht vorhanden ist), nimmt Edge an, dass die Autorisierung durch einen Drittanbieter fehlgeschlagen ist, und gibt eine Fehlernachricht zurück.

In der Regel wird diese Variable basierend auf einem Service-Callout für einen Autorisierungsdienst eines Drittanbieters auf "True" oder "False" gesetzt. Sie können sich die Service-Callout-Antwort ansehen und die Variable entsprechend einstellen. Weitere Informationen finden Sie in der ServiceCallout-Richtlinie. Eine andere Technik für diese Variable Einstellung ist eine AssignMessage Politik mit dem AssignVariable Element zu verwenden, wie folgt aus:

<AssignMessage name="AssignMessage-SetVariable"> 
<DisplayName>Assign Message - Set Variable</DisplayName> 
<AssignVariable> 
    <Name>oauth_external_authorization_status</Name> 
    <Value>true</Value> 
</AssignVariable> 
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 

Siehe den folgenden Link:

Using third-party OAuth tokens

+0

Ich bin sehr unklar, wo dies zugewiesen werden würde und wie ich die Token-Variable in die Header der Oauth Autorisierungsanfrage einfügen würde. Dies ist eine SPA ASP.NET-Anwendung. Wo würde ich diesen Code einfügen? Ist dies die Webconfig-Einstellungen? – Kat