来自自定义身份验证服务器的MVC前端身份JWT令牌
本文关键字:前端 身份 JWT 令牌 MVC 自定义 身份验证 服务器 | 更新日期: 2023-09-27 18:05:17
我在过去的一天一直在网上徘徊,试图弄清楚我如何能附加一个MVC ASP。我使用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中间件应该是调用身份验证服务器的人。但是,我也不希望用户在登录时被导航到身份验证服务器。
这有点令人困惑,我对这种类型的认证非常陌生,似乎我读得越多,我就越感到困惑,也许是因为所有不同的例子都在那里,所有的方法都略有不同,一些非常过时的例子。
所以如果有人能给我指出一个例子,说明我正在努力实现的目标,我将非常感激。
的问候杰森Coley
这是我的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,并在应用程序中以正常方式使用该值来识别用户。如果你把你得到令牌的代码贴出来,我可能会扩展;有一些库可以帮你处理这个