簡體   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