![](/img/trans.png)
[英]Azure functions authentication with ASP.NET Identity and JWT token
[英]MVC Frontend Identity JWT Token from custom Authentication server
在过去的一天里,我一直在网上徘徊,试图弄清楚如何将MVC ASP.NET 4.5应用程序附加到使用在bitoftech.net( http://bitoftech.net/ 2015/01/21 / asp-net-identity-2-with-asp-net-web-api-2-accounts-management / )
现在身份验证/ webapi服务器本身运行良好,我必须制作一些mod才能使其在MySQL中正常工作,但总的来说它正在运行并保护webapi端点,因此在这一方面非常出色。
但是对于我一生,我无法弄清楚如何使MVC应用程序简单地使用此令牌终结点来使用令牌并验证用户身份。
我可以在登录表单中调用令牌api并接收令牌,但是我不知道如何使用该令牌以在MVC应用程序中使用。 我也认为这是错误的,因为我认为OWIN中间件应该是调用身份验证服务器的中间件。 但是,我也不想将用户导航到身份验证服务器进行登录。
这有点令人困惑,对于这种身份验证我还是很陌生,似乎我读得越多,我就越困惑,这可能是因为那里有所有不同的示例,都是针对略有不同的方法和一些非常过时的示例。
因此,如果有人可以举一个例子说明我正在努力实现的目标,我将不胜感激。
问候杰森·科利
这是我的accountservice用来调用身份服务器的代码
var client = new OAuth2Client(new Uri(oathBaseUrl()));
TokenResponse token = await client.RequestResourceOwnerPasswordAsync(model.Email, model.Password);
我在这里使用了Thinktecture.IdentityModel.Client来简化此过程。
我还在下面使用了此方法,该方法的确为我提供了正确的访问令牌。
using (var client = new HttpClient(new HttpClientHandler ))
{
client.BaseAddress = new Uri(oathBaseUrl());
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var values = new Dictionary<string, string>
{
{ OAuth2Constants.GrantType, OAuth2Constants.Password },
{ OAuth2Constants.UserName, model.Email },
{ OAuth2Constants.Password, model.Password }
};
var form = new FormUrlEncodedContent(values);
var response = client.PostAsync("", form).Result;
if (response.IsSuccessStatusCode)
{
response.EnsureSuccessStatusCode();
var tokenResponse = response.Content.ReadAsStringAsync().Result;
var json = JObject.Parse(tokenResponse);
var jwt = json["access_token"].ToString();
最简单的方法是将令牌值传递到httponly cookie中,然后以正常方式在应用程序中使用它来识别用户。 如果将代码发布到获得令牌的位置,我可能可以扩展; 有图书馆为您处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.