在 WebApi 端为 IdentityServer 验证用户
Authenticating user for IdentityServer on the WebApi side
我是新手。有人可以帮助我吗,因为我已经为我的问题发疯了将近一个月:(
简而言之:我有身份服务器项目、一个 webapi 项目和 angular 客户端。客户端请求进行身份验证并获取 id_token 和 access_token(都很好),access_token 发送到我拥有的 webapi 项目:
var idServerBearerTokenAuthOptions = new IdentityServerBearerTokenAuthenticationOptions {
Authority = "https://localhost:11066/IdentityServer/identity",
ValidationMode = ValidationMode.ValidationEndpoint,
AuthenticationType = "Bearer",
RequiredScopes = new[] { "permissions", "openid" },
DelayLoadMetadata = true
};
app.UseIdentityServerBearerTokenAuthentication(idServerBearerTokenAuthOptions);
我有 Autofac,它应该让我成为当前登录用户
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest();
builder.Register(c => new ClaimsIdentityApiUser((ClaimsIdentity)Thread.CurrentPrincipal.Identity)).As<IApiUser>().InstancePerRequest();
BUT Thread.CurrentPrincipal.Identity 什么都没有,而且
也 ClaimsPrincipal.Current.Identity 什么都没有。我错过了什么??
p.s。与此问题类似的问题 Protecting webapi with IdentityServer and Autofac - can't get claims 但显然不是相同的解决方案或设置。
a) 应始终从 ApiController.User(或 RequestContext)中检索用户
b) 令牌验证可能由于某种原因而失败使用此资源为令牌验证中间件启用日志记录:
https://identityserver.github.io/Documentation/docsv2/consuming/diagnostics.html
c) 您使用的是 JWT 还是引用令牌?对于 JWT,您可以将 ValidationMode 设置为 Local
我是新手。有人可以帮助我吗,因为我已经为我的问题发疯了将近一个月:( 简而言之:我有身份服务器项目、一个 webapi 项目和 angular 客户端。客户端请求进行身份验证并获取 id_token 和 access_token(都很好),access_token 发送到我拥有的 webapi 项目:
var idServerBearerTokenAuthOptions = new IdentityServerBearerTokenAuthenticationOptions {
Authority = "https://localhost:11066/IdentityServer/identity",
ValidationMode = ValidationMode.ValidationEndpoint,
AuthenticationType = "Bearer",
RequiredScopes = new[] { "permissions", "openid" },
DelayLoadMetadata = true
};
app.UseIdentityServerBearerTokenAuthentication(idServerBearerTokenAuthOptions);
我有 Autofac,它应该让我成为当前登录用户
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest();
builder.Register(c => new ClaimsIdentityApiUser((ClaimsIdentity)Thread.CurrentPrincipal.Identity)).As<IApiUser>().InstancePerRequest();
BUT Thread.CurrentPrincipal.Identity 什么都没有,而且 也 ClaimsPrincipal.Current.Identity 什么都没有。我错过了什么??
p.s。与此问题类似的问题 Protecting webapi with IdentityServer and Autofac - can't get claims 但显然不是相同的解决方案或设置。
a) 应始终从 ApiController.User(或 RequestContext)中检索用户 b) 令牌验证可能由于某种原因而失败使用此资源为令牌验证中间件启用日志记录:
https://identityserver.github.io/Documentation/docsv2/consuming/diagnostics.html
c) 您使用的是 JWT 还是引用令牌?对于 JWT,您可以将 ValidationMode 设置为 Local