我将我的Web API配置为以使用客户端声明的方式使用Identity Server 4,并且用户声称在端点上实现授权。
这里的问题是我需要知道客户端应用程序使用哪种授权类型来自定义该授权机制。例如,如果客户端使用客户端凭据,则用户声明将不可用。
当请求到达Web API端点时,有没有办法以编程方式确定客户端应用程序使用的授权类型?
Web API按如下方式设置Identity Server:
services
.AddAuthorization(
(options) =>
{
options.AddPolicy(
Policies.Monitoring,
(policy) =>
{
policy.RequireClaim("scope", Policies.Scopes.Monitoring);
});
options.AddPolicy(
Policies.VatNumber,
(policy) =>
{
policy.RequireClaim("scope", Policies.Scopes.VatNumber);
policy.Requirements.Add(new ClientSubscriptionRequirement());
});
});
services.AddSingleton<IAuthorizationHandler, ClientSubscriptionAuthorizationHandler>();
services
.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(
(options) =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ApiName = "datalookup";
});
我需要知道ClientSubscriptionAuthorizationHandler
中的客户端应用授权类型。