Итак, я заказываю, чтобы мое пользовательское утверждение было доступно в каждом запросе API, который мне приходилось делать при настройке ApiResource
при запуске IdentityServer.
//Config.cs
public static IEnumerable<ApiResource> GetApiResources()
{
ApiResource apiResource = new ApiResource("api1", "DG Analytics Portal API")
{
UserClaims =
{
JwtClaimTypes.Name,
JwtClaimTypes.Email,
AnalyticsConstants.TenantRoleClaim // my custom claim key/name
}
};
return new List<ApiResource>
{
apiResource
};
}
Этот метод пропущенна services.AddInMemoryApiResources
(или на любой другой способ хранения, который вы используете)
IIdentityServerBuilder builder = services
.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
})
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources()) // here
.AddInMemoryClients(Config.GetClients())
.AddAspNetIdentity<ApplicationUser>();
При такой настройке при каждом обращении к конечной точке API появляется мое пользовательское требование TenantRole
, поэтому я могу просто сделать User.FindFirst(AnalyticsConstants.TenantRoleClaim)
чтобы получить это.