繁体   English   中英

如何在用户注册期间生成OWIN承载令牌

[英]How to generate an OWIN bearer token during registration of a user

我已经使用OWIN和bearer token实现了身份验证,当用户尝试登录时,它可以正常工作。 所以我转到特殊的\\ Token url并提供用户名/密码并获得此令牌作为响应。 但我也有一个注册用户功能,理想情况下,我想在注册用户后立即获得此令牌。 我可以在Web服务器内部进行\\ Token,或者在客户端注册后执行\\ Token,但我希望有一个解决方案,我可以做类似的事情

public Token RegisterUser(RegisterUserRequest request)
{
    // Registration here
    return OAuthProvider.GenerateToken(username, password)
}

有可能做那样的事吗?

我花了很长时间才弄清楚所以我想我会在这里添加它。

您可以使用OAuthAuthorizationServerOptions对象的AccessTokenFormat上的Protect功能手动生成令牌,假设您已在启动类中将其设置为静态,否则它将为null。

AuthenticationTicket ticket = new AuthenticationTicket(claimsIdentity, new AuthenticationProperties());
string token = Startup.OAuthServerOptions.AccessTokenFormat.Protect(ticket);

似乎是一个非常奇怪的地方放置令牌生成逻辑。

无论如何,您可以根据需要使用令牌,可能会将其附加到您的传出标头或响应对象。

我一直在寻找你的相同的东西,但我找不到任何东西,所以我只是在内部提出要求。 不是很多工作,但仍然有点令人失望。

public JToken GetLoginResponse(UserSignupDto dto)
{
    var tokenPath = Request.RequestUri.GetLeftPart(UriPartial.Authority) + "/token";
    var reqData = string.Format("grant_type=password&username={0}&password={1}&client_id={2}", dto.Email, dto.Password, dto.ClientId);

    using(var client = new WebClient())
    {
        return JObject.Parse(client.UploadString(tokenPath, reqData));
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM