来自自定义身份验证服务器的MVC前端身份JWT令牌



我在过去的一天一直在网上徘徊,试图弄清楚我如何能附加一个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,并在应用程序中以正常方式使用该值来识别用户。如果你把你得到令牌的代码贴出来,我可能会扩展;有一些库可以帮你处理这个

相关内容

最新更新