我是新来的。有人可以帮助我,因为我对我的问题疯狂了近一个月了:( 简而言之:我有身份服务器项目,webapi项目和角度客户端。客户端请求进行身份验证并获取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,应该让我当前的logedin用户
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest();
builder.Register(c => new ClaimsIdentityApiUser((ClaimsIdentity)Thread.CurrentPrincipal.Identity)).As<IApiUser>().InstancePerRequest();
但Thread.CurrentPrincipal.Identity什么都没有,而且 还有ClaimsPrincipal.Current.Identity什么都没有。我错过了什么?
P.S。与此问题Protecting webapi with IdentityServer and Autofac - can't get claims类似的问题,但显然不是同样的解决方案也没有设置。
答案 0 :(得分:0)
a)应始终从ApiController.User(或RequestContext)检索用户 b)令牌验证可能由于某种原因失败,使用此资源启用令牌验证中间件的日志记录:
https://identityserver.github.io/Documentation/docsv2/consuming/diagnostics.html
你正在使用JWT或参考令牌吗?对于JWT,您可以将ValidationMode设置为Local