繁体   English   中英

使用ASP.NET Web Api进行角度认证

[英]Angular authentication with ASP.NET Web Api

我需要在Angular前端和ASP.NET Web Api后端之间构建身份验证。

要求是:

  • 我需要2个不同的登录页面(1个带有经典登录屏幕,而1个带有经典登录屏幕+ LinkedIn)

我找不到有关如何进行此操作的最新文档...我查看了https://auth0.com/,但他们使用的Web API版本不再支持该软件包。

我的研究还告诉我,我可能应该使用Jwt,但是我很难在Web api中构建它。

有人可以给我适当的文件吗? 我知道有一个内置身份验证,但是我不知道这个身份验证有多好,以及如何在JWT中使用它们。 我在网上找到的所有内容都是过时的...。

非常感谢您的帮助。

这是您需要执行的流程,以便使用linkedin对用户进行身份验证:
角部分:
1.使用请求的查询参数重定向用户,例如:

                   var req = {
                    response_type: "code",
                    client_id: "Your Client ID",
                    redirect_uri: location.origin + location.pathname,
                    state: "DCESFWf45A53sdfKef434"
                };
                window.location.href = linkedinAuthorizationUrl + ObjecttoParams(req);

2.在用户通过身份验证后,linkedin将使用附加的名为code的查询参数将用户重定向回您的redirect_url ,您的角度控制器应收集该数据并将其发送到您的webapi方法以进行下一步。
WebApi部分:
3.一旦将linkedin代码发布到您的webapi,您就需要与linkedin api(HTTP POST)交换令牌,例如:

using (WebClient wc = new WebClient()){
string RedirectUrl = providerLogin.RedirectUrl;
//Exchange tokens with linkedin                    
byte[] resultAsBytes = 
wc.UploadValues("https://www.linkedin.com/oauth/v2/accessToken", new 
NameValueCollection()
              {
              { "grant_type", "authorization_code" },
              { "code", "THE CODE YOU RECEIVED FROM THE CLIENT" },
              {"redirect_uri",RedirectUrl },
              {"client_id", "YOUR LINKEDIN KEY"},
               {"client_secret", "YOUR LINKEDIN PASSWORD"}
                       });

 string resultAsString = 
 System.Text.Encoding.UTF8.GetString(resultAsBytes);
                        var resultAsJson = JObject.Parse(resultAsString);
                        string accessToken = 
 resultAsJson["access_token"].ToString();
 }

4.最后一部分-当您拥有访问令牌时,您需要对linkedin的API进行GET请求,以获取用户的详细信息:

using (WebClient wc = new WebClient()){
wc.Headers.Add("Authorization", "Bearer " + accessToken);
var json = wc.DownloadString("https://api.linkedin.com/v1/people/~:
(email-address,id,first-name,last-name,picture-url,public-profile-url)?
format=json");
resultAsJson = JObject.Parse(json);
}

就是这样! 我希望一切都清楚了,并且您理解我的代码。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM