Получение претензий из области ресурсов IdentityServer

У меня возникли проблемы с получением IdentityServer для возврата любых претензий в области ресурсов. Я определяю объем ресурса как:

    private static Scope Roles
    {
        get
        {
            return new Scope
            {
                Name = "roles",
                DisplayName = "Roles",
                Type = ScopeType.Identity,
                Claims = new List<ScopeClaim>
                {
                    new ScopeClaim(SecurityContants.ClaimTypes.Role)
                }
            };
        }
    }

    private static Scope Api
    {
        get
        {
            return new Scope
            {
                Name = "api",
                DisplayName = "Api",
                IncludeAllClaimsForUser = true,
            //i've also tried adding the claim directly
                Type = ScopeType.Resource,
                Emphasize = false
            };
        }
    }

Затем они добавляются в коллекцию и возвращаются. В моем API Startup.cs я настраиваю как:

public void Configuration (IAppBuilder app)
    {

        JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

        app.UseIdentityServerBearerTokenAuthentication(
                new IdentityServerBearerTokenAuthenticationOptions
                {                        
                    Authority = "http://localhost/security.tokenserver.site",
                    RequiredScopes = new[] { "api", "roles" },
                    RoleClaimType = "roles"
                });
        var config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();
        app.UseWebApi(config);
    }
}

Моя конечная точка API просто:

    public IEnumerable<string> Get()
    {
        var user = User as ClaimsPrincipal;
        var claims = new List<string>();

        foreach (var item in user.Claims)
        {
            claims.Add(item.Value);
        }
        return claims;
    }

Вывод этого при вызове из моего пользовательского интерфейса после аутентификации:

[ "customer_svc", "api", "https://idsrv3/embedded", "https://idsrv3/embedded/resources", "1448048492", "1448044892" ] 

Таким образом, первоначальный вход в систему в пользовательском интерфейсе работает (я вижу там утверждение о ролях), извлекает токен и передает его в API-интерфейс. Но я не вижу роли пользователя после того, как токен передан обратно в API.

Что мне не хватает?

0 ответов

Другие вопросы по тегам