ASP.NET身份登录通过REST API

时间:2017-06-30 17:03:54

标签: c# asp.net rest api

我一直在努力解决这个问题很长一段时间,我正在尝试创建一个具有登录功能的REST API,并会向登录的用户提供令牌。 该请求将来自不同的应用程序,Web应用程序和本机应用程序,对于这个应用程序,它是一个您填写凭据的网站,它将被发送到REST API,并将以“您已登录,此处为您的令牌”或“不正确的凭据”进行响应。 / p>

如果您已登录,则唯一提供的是令牌,这很好,但也有点烦人,因为我希望用户实际登录Web应用程序。 因此,使用该令牌,我将向REST API询问用户“Identity”JWT并将其添加到Web应用程序,以便我们在用户中签名。

第一个问题是,我不确定这是否是通过REST API使用登录系统的正确方法。 第二个问题是,我似乎无法将声明反序列化为正确的列表并将其添加到用户声明中,以便他登录。

现在对于代码,在我为声明请求REST API之后,它将回答:

[{"type" : "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","value":"5fa2f47f-bd0d-453c-8c74-109675ab2fc1"},
{"type" : "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name","value":"jhouten17@gmail.com"},
{"type" : "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider","value":"ASP.NET Identity"},
{"type" : "AspNet.Identity.SecurityStamp","value":"6e2d416c-fa21-47fe-a622-9bee8429e36b"}]

对我而言看起来不错,我会尝试将其序列化以列出并稍后将其添加到声明中,如下所示:

var keyvalues = JsonConvert.DeserializeObject<List<ClaimsModel>>(modelString);

public class ClaimsModel
{
    public string Type { get; set; }

    public string Value { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我最终使用以下SO答案作为我的指导: How to use JWT in MVC application for authentication and authorization?