2015-01-15 161 views
2

我想在WEB API中註冊期間生成令牌。我是ASP.NET Identity的新手,我抓住了所有由ASP.NET Identity發佈的開箱API,但沒有看到任何API來生成令牌。我正在編寫一組WEB API,這些API的使用者正在轉向移動應用程序和基於Web的門戶。 請幫助。ASP.NET身份 - 生成令牌

回答

2

你所尋找的是令牌端點,您可以在認證的配置中添加:

OAuthOptions = new OAuthAuthorizationServerOptions 
{ 
    TokenEndpointPath = new PathString("/Token"), 
    Provider = new ApplicationOAuthProvider(PublicClientId), 
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), 
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
    AllowInsecureHttp = true 
}; 

當發送帶有用戶名與此終結,你會得到一個POST請求和密碼回到你可以在你的移動應用程序使用的承載令牌:

static string GetToken(string userName, string password) 
{ 
    var pairs = new List<KeyValuePair<string, string>> 
        { 
         new KeyValuePair<string, string>("grant_type", "password"), 
         new KeyValuePair<string, string>("username", userName), 
         new KeyValuePair<string, string> ("Password", password) 
        }; 
    var content = new FormUrlEncodedContent(pairs); 
    using (var client = new HttpClient()) 
    { 
     var response = client.PostAsync("http://localhost:62069/Token", content).Result; 
     return response.Content.ReadAsStringAsync().Result; 
    } 
} 

約翰安泰信寫了nice tutorial了。在那裏您還可以找到適當的代碼片段。

您可以自定義它,例如設置令牌的自定義過期和刷新令牌的使用。