2016-06-21 9 views
0

Wie erstelle ich eine Anfrage, die den Saml oder Google IDP zur Autorisierung verwendet? Mein Verständnis ist, dass, wenn ich "acr_values ​​= idp: Google" in meine Anfrage einfüge, die Anfrage über meinen Google Idp-Pfad weitergeleitet wird. Ebenso wenn ich "acr_values ​​= idp: saml2p" schreibe, sollte es durch meine Saml Idp gehen. Ist es ein anderer Weg? Im Moment geht die Anfrage an localhost: 98575/connect/token.IdentityServer Multi IDP Konfigurationsanfrage

Hier ist meine aktuelle Anfrage:

POST /connect/token HTTP/1.1 
 
Host: localhost:98575 
 
Authorization: Basic SomethingEncrypted 
 
Cache-Control: no-cache 
 
Postman-Token: AGuid 
 
Content-Type: application/x-www-form-urlencoded 
 

 
grant_type=password&scope=customScope+openid+offline_access&[email protected]&password=SomePassword&acr_values=idp:Google

Hier ist ein Ausschnitt aus meiner IdentityServer Starup.cs Datei:

public static void ConfigureIdentityProviders(IAppBuilder app, string signInAsType) 

    { 
     var authServicesOptions = new KentorAuthServicesAuthenticationOptions(false) 
     { 
      SPOptions = new SPOptions 
      { 
       EntityId = new EntityId("http://sp.example.com") 
      }, 

      SignInAsAuthenticationType = signInAsType, 
      AuthenticationType = "saml2p", 
      Caption = "SAML2p", 
     }; 

     authServicesOptions.IdentityProviders.Add(new IdentityProvider(
      new EntityId("http://stubidp.kentor.se/Metadata"), 
      authServicesOptions.SPOptions) 
     { 
      LoadMetadata = true, 
     }); 

     app.UseKentorAuthServicesAuthentication(authServicesOptions); 

     var google = new GoogleOAuth2AuthenticationOptions 
     { 
      AuthenticationType = "Google", 
      Caption = "Google", 
      SignInAsAuthenticationType = signInAsType, 

      ClientId = "767400843187-8boio83mb57ruogr9af9ut09fkg56b27.apps.googleusercontent.com", 
      ClientSecret = "5fWcBT0udKY7_b6E3gEiJlze" 
     }; 
     app.UseGoogleAuthentication(google); 
+0

Ich verstehe nicht, was das Problem ist, können Sie die Frage zu klären, was das Problem ist und was Sie versuchen zu erreichen? –

+0

ja. Hoffentlich hat das geklärt. Es war schlecht formuliert. Wirklich, es ist eine ignorante Frage. Wie stelle ich die Anfrage, meinen gewünschten IDP zu treffen? Gibt es eine Pfadkonfiguration, die ich nicht in IdentityServer verstehn kann, oder stelle ich einfach den acr_values ​​= idp: IDPName wie in https://identityserver.github.io/Documentation/docsv2/configuration/identityProviders.html – fowler

Antwort

0

Die acr_values ​​mit "IDP: foo" wird nur verwendet, für den Autorisierungsendpunkt, nicht den Token-Endpunkt. IOW, es wird nur verwendet, um den Benutzer im Browser automatisch an den angegebenen externen Identitätsprovider umzuleiten.

+0

Interessant. Das würde Sinn machen, warum es für das, was ich tat, keine Rolle spielte. Wie ermittelt es das IDP für die Authentifizierung? Das Szenario ist, dass ich dem Benutzer nicht mehrere Authentifizierungsschaltflächen präsentieren möchte. Ich möchte in der Lage sein, anhand von Informationen, die ich in meiner Datenbank habe, programmatisch festzustellen, an welchen Idp sie gesendet werden. UserServiceBase vielleicht? Danke für Ihre Hilfe! – fowler

+0

Der für das IDP gesendete Wert muss mit dem Authentifizierungsschema für die registrierte externe Authentifizierungs-Middleware übereinstimmen. –