1

Ich verwende IdSrv3 zur Authentifizierung. Ich muss Access-Token in meinem Web-API-Client erhalten, um die Bearer-Authentifizierung in einem anderen Web-API-Client zu übergeben. Mein Startup.cs Code:Zugriffstoken in Web-API-Client IdSrv3-Authentifizierung

public class Startup 
{ 
     public void Configuration(IAppBuilder app) 
     { 

      ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 

      JwtSecurityTokenHandler.InboundClaimTypeMap.Clear(); 

      var identityServerPath = ConfigurationManager.AppSettings["IdentityServerPath"]; 

      app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
      { 
       Authority = $"{identityServerPath}/core", 

       RequiredScopes = new[] { "openid"}, 
       AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active, 

       // client credentials for the introspection endpoint 
       ClientId = "someid" 
      }); 
     } 
} 

Ich versuche, auf diese Weise Zugriffstoken zu erhalten:

var claims = (User as ClaimsPrincipal).Claims; 
var AccessToken = claims.First(x => x.Type == "access_token").Value; 

Wie access_token zu bekommen? Anspruchsvariable ist leer.

+0

Gibt es da irgendwo eine Frage? :) –

+0

@JohnKorsnes behoben :) –

+0

Cool :) Bitte geben Sie eine Antwort für den nächsten Entwickler, wenn es andere profitieren kann :) –

Antwort

2

Sie können die Eigenschaft "PreserveAccessToken" auf "true" setzen (Standardwert ist "false"). Zum Beispiel:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
{ 
    Authority = "https://localhost:44331", 
    ClientId = "apiOne",  
    ClientSecret = "secret", 
    RequiredScopes = new[] {"apiOne"}, 
    ValidationMode = ValidationMode.ValidationEndpoint, 
    PreserveAccessToken = true 
}); 

Dies wird die Zugriffstoken als Anspruch bewahren. Sie können es dann wie oben beschrieben abrufen. Außer, der Anspruch ist "Token", nicht "Access_Token".

+0

Es ist wieder leer :( –

+0

@AstemirAlmov - Also, gibt es keine Ansprüche überhaupt? Vielleicht Sie kann den Code posten, der die Konfiguration der anderen Teile im Spiel anzeigt, zum Beispiel der Client, der diese Web-API aufruft, und die IdentityServer-Konfiguration dieses Clients? –