我需要在我的Angular前端和ASP.NET Web Api后端之间构建一个身份验证。
要求是:
我无法找到有关如何制作此内容的最新文档... 我查看https://auth0.com/,但他们正在使用我的网络API版本不再支持的软件包。
我的研究还告诉我,我可能应该使用Jwt,但我很难在我的网络API中构建它。
有人可以给我适当的文件吗?我知道有一个内置身份验证,但我不知道这个有多好以及如何将它们与JWT一起使用。我在网上找到的一切都是过时的......
非常感谢您的帮助。
答案 0 :(得分:0)
这是您使用linkedin验证用户所需的流程:
Angular Part:
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.用户通过身份验证后,会将用户重定向回 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);
}
那就是它!我希望一切都清楚,你理解我的代码。祝你好运!