Identity Server 4: hinzufügen von Forderungen zu access token

Ich bin mit Identity Server 4 und Implizite Flow und möchten Sie einige Ansprüche an den access token, den neuen Forderungen oder Attribute sind "tenantId" und "langId".

Habe ich Hinzugefügt, langId wie einer meiner Bereiche nach unten und dann die Anforderung, dass durch den identity server, aber ich bekomme die tenantId auch. Wie kann das passieren?

Diese die Liste der Bereiche und client-Konfiguration:

  public IEnumerable<Scope> GetScopes()
    {
        return new List<Scope>
        {
             //standard OpenID Connect scopes
            StandardScopes.OpenId,
            StandardScopes.ProfileAlwaysInclude,
            StandardScopes.EmailAlwaysInclude,

            new Scope
            {
                Name="langId",
                 Description = "Language",
                Type= ScopeType.Resource,
                Claims = new List<ScopeClaim>()
                {
                    new ScopeClaim("langId", true)
                }
            },
            new Scope
            {
                Name = "resourceAPIs",
                Description = "Resource APIs",
                Type= ScopeType.Resource
            },
            new Scope
            {
                Name = "security_api",
                Description = "Security APIs",
                Type= ScopeType.Resource
            },
        };
    }

Client:

  return new List<Client>
        {
            new Client
            {
                ClientName = "angular2client",
                ClientId = "angular2client",
                AccessTokenType = AccessTokenType.Jwt,
                AllowedGrantTypes = GrantTypes.Implicit,
                AllowAccessTokensViaBrowser = true,
                RedirectUris = new List<string>(redirectUris.Split(',')), 
                PostLogoutRedirectUris = new List<string>(postLogoutRedirectUris.Split(',')),
                AllowedCorsOrigins = new List<string>(allowedCorsOrigins.Split(',')),

                AllowedScopes = new List<string>
                {
                   "openid",
                   "resourceAPIs",
                   "security_api",         
                   "role",
                  "langId"
                }
            }
        };

Habe ich die Forderungen in ProfileService:

 public class ProfileService : IdentityServer4.Services.IProfileService
{
    private readonly SecurityCore.ServiceContracts.IUserService _userService;


    public ProfileService(SecurityCore.ServiceContracts.IUserService userService)
    {
        _userService = userService;
    }

    public Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
       //hardcoded them just for testing purposes
        List<Claim> claims = new List<Claim>() { new Claim("langId", "en"), new Claim("tenantId", "123") };

        context.IssuedClaims = claims;


        return Task.FromResult(0);
    }

Dies ist, was ich bin anfordern, um die token, das problem ist, ich bin nur Interesse an der langId aber ich bin immer beide die tenantId und langId in der access-token

http://localhost:44312/account/login?returnUrl=%2Fconnect%2Fauthorize%2Flogin%3Fresponse_type%3Did_token%2520token%26client_id%3Dangular2client%26redirect_uri%3Dhttp%253A%252F%252Flocalhost:5002%26scope%3DresourceAPIs%2520notifications_api%2520security_api%2520langId%2520navigation_api%2520openid%26nonce%3DN0.73617935552798141482424408851%26state%3D14824244088510.41368537145696305%26

Decodiert access token:

 {
  "nbf": 1483043742,
  "exp": 1483047342,
  "iss": "http://localhost:44312",
  "aud": "http://localhost:44312/resources",
  "client_id": "angular2client",
  "sub": "1",
  "auth_time": 1483043588,
  "idp": "local",
  "langId": "en",
  "tenantId": "123",
  "scope": [
    "resourceAPIs",     
    "security_api",
    "langId",
    "openid"
  ],
  "amr": [
    "pwd"
  ]
}
  • Welche version von IdentityServer4 ist das?
  • "IdentityServer4": "1.0.0-rc1-update2",
  • Jede chance, die Sie aktualisiert haben, dies für IS4 1.0 final oder mit der version 1.2?
  • Noch nicht, Warum? Gibt es irgendwelche Probleme?
  • Ich versuche, Ansprüche aus dem token als gut, aber die neuere version von IS4 scheint nicht zu funktionieren mit diesem code. Ich habe schon überall auf der Suche nach einer Lösung, und Sie ist die nächste, die ich finden konnte.
  • Für den access-token, überprüfen Sie Ihre ApiResource ist UserClaims. Quelle: github.com/IdentityServer/IdentityServer4/issues/...

Schreibe einen Kommentar