В IdentityServer я добавил новую область, как это:IdentityServer3 Нет scopeclaims при использовании ссылки маркеров
new Scope
{
Name = "myscope",
Description = "myscope",
Type=ScopeType.Resource,
ShowInDiscoveryDocument= false,
Emphasize = false,
//AccessTokenType=1, //Reference
AccessTokenType=0, //JWT
Claims = new List<ScopeClaim>
{
new ScopeClaim("location"),
}
Я добавил клиент:
new Client
{
ClientName = "myclient",
Enabled = true,
ClientId = "myclient",
Flow = Flows.Implicit,
AllowedScopes = new List<string> {"myscope"},
Claims = new List<Claim> {new Claim("location", "datacenter")}
}
Я добавил реализацию GetProfileData:
public override async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
await base.GetProfileDataAsync(context);
if (context.AllClaimsRequested)
context.IssuedClaims = context.Subject.Claims;
else if (context.RequestedClaimTypes != null)
context.IssuedClaims = context.Subject.Claims.Where(claim => context.RequestedClaimTypes.Contains(claim.Type)).ToList();
}
В моей WebAPI, я использую AccessTokenValidation:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5300",
AllowedScopes = { "myscope" },
RequireHttpsMetadata = false,
});
services.AddAuthorization(options =>
{
options.AddPolicy("location", policy => policy.RequireClaim("location"));
});
Мой контроллер с префиксом:
[Authorize(ActiveAuthenticationSchemes = "Bearer", Policy = "location")]
public async Task<IActionResult> Get()
{
...
}
Теперь, когда маркер доступа устанавливается в JWT, это работает отлично, я могу назвать конечную точку. Теперь, если я изменяю AccessTokenType для ссылочного токена, он терпит неудачу ... Если я проверяю RequestedClaimTypes во время вызова конечной точки profiledata, он содержит претензии для «myscope» при использовании JWT, но не при использовании ссылочного токена ... Я пропустил какую-то конфигурацию или это так, как это предполагается? Я бы ожидал получить те же претензии в обеих настройках
[Это сообщение Dominick Baier] (https://leastprivilege.com/2015/11/25/reference-tokens-and-introspection/) более подробно освещает ссылки на токены и интроспекцию, если вы заинтересованы –