ASP.NET标识 - 生成标记

时间:2015-01-15 17:13:13

标签: asp.net-identity access-token

我想在WEB API中注册期间生成令牌。我是ASP.NET身份的新手,我已经抓住了ASP.NET身份发布的所有开箱即用的API,但没有看到任何API来生成令牌。我正在编写一组WEB API,这些API的使用者将转向移动应用程序和基于Web的门户。 请帮助。

1 个答案:

答案 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。在那里,您还可以找到相应的代码段。

您可以根据需要对其进行自定义,例如设置令牌的自定义到期时间以及刷新令牌的使用情况。