我使用 OWIN 库创建了 WebApi selfhost 服务。除了一些身份验证问题外,一切都很好。我已经在服务器上启动了该服务的两个实例,结果发现从一项服务获得的令牌对第二项服务有效!据我所知,OWIN 使用一些保护密钥来验证令牌。问题是:如何使密钥对另一个服务实例无效?我尝试使用 Generate-MachineKey 生成自定义密钥,但结果是一样的。OWIN 使用的保护密钥是什么?它存储在某个地方吗?对于不同的应用程序,此密钥是否有所不同?设置:var oAuthOptions = new OAuthAuthorizationServerOptions{ TokenEndpointPath = new PathString("/token"), AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(accessTokenExipreMinutes), Provider = new AuthorizationServerProvider(), AllowInsecureHttp = allowInsecureHttp};appBuilder.UseOAuthBearerTokens(oAuthOptions); 授权服务器提供者:class AuthorizationServerProvider : OAuthAuthorizationServerProvider{ public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { context.TryGetFormCredentials(out string clientId, out string clientSecret); var result = Validate(clientId, clientSecret); if (result) { context.Validated(clientId); return; } context.Rejected(); } public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { ClaimsIdentity oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType); var props = new AuthenticationProperties(); var ticket = new AuthenticationTicket(oAuthIdentity, props); context.Validated(ticket); } catch (Exception ex) { context.Rejected(); } return Task.FromResult(true); }}
1 回答
- 1 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消