为了账号安全,请及时绑定邮箱和手机立即绑定

WebApi OWIN 相同令牌对两个不同的服务实例有效

WebApi OWIN 相同令牌对两个不同的服务实例有效

C#
一只名叫tom的猫 2021-10-24 14:17:44
我使用 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信