我有一个 IdentityServer4 asp.net-core 主机设置,用于资源所有者密码授予,使用 JWT Bearer 令牌和一个单独的 asp.net-core 主机中的 API,该主机具有我的 API 和两个 Angular 客户端。
身份验证和授权正在从我的两个 Angular 客户端运行到我的 API。
现在我需要在 IdentityServer4 主机中公开一个 API,以便我可以从 Angular 客户端之一创建用户。
我已将我的身份验证和授权设置从我的 API 复制到我的 IdentityServer4 主机,但是,我无法对其进行身份验证。
在下面的代码中,在 API 中,我可以在 jwt.Authority... 行上设置断点,第一次调用将在我的 API 中触发此断点,但不会在 IdentityServer4 主机中触发。
services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
.AddJwtBearer(jwt =>
{
jwt.Authority = config.Authentication.Authority; //Breakpoint here
jwt.RequireHttpsMetadata = config.Authentication.RequireHttpsMetadata;
jwt.Audience = Common.Authorization.Settings.ServerApiName;
});
Run Code Online (Sandbox Code Playgroud)
我不确定它是否相关,但我使用的是基于角色的授权,以下是为此的设置。
var authPolicyBuilder = new AuthorizationPolicyBuilder()
.RequireRole(Common.Authorization.Settings.ServerApiRoleBasePolicyName)
.Build();
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(authPolicyBuilder));
...
services.AddAuthorization(options =>
{
options.AddPolicy(Common.Authorization.Settings.ServerApiSetupClientAdminRolePolicyName, policy =>
{
policy.RequireClaim("role", …
Run Code Online (Sandbox Code Playgroud) c# authentication authorization asp.net-core identityserver4