我想在WEB API中注册期间生成令牌。我是ASP.NET身份的新手,我已经抓住了ASP.NET身份发布的所有开箱即用的API,但没有看到任何API来生成令牌。我正在编写一组WEB API,这些API的使用者将转向移动应用程序和基于Web的门户。 请帮助。
答案 0 :(得分:3)
您要查找的是令牌端点,您可以在身份验证配置中添加该端点:
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。在那里,您还可以找到相应的代码段。
您可以根据需要对其进行自定义,例如设置令牌的自定义到期时间以及刷新令牌的使用情况。