我目前正在使用ASP.NET核心MVC6构建一个web应用程序,并使用新的身份模型。不幸的是,目前关于这个主题的文档不多,我想实现社会认证。如何用MVC6/Identity来实现这个功能,最好的方法是什么?
发布于 2016-04-03 20:15:28
正如Joe提到的,有相当好的文档:使用外部提供程序启用身份验证。
有Facebook的例子,但与添加微软、Google和Twitter的方式相同--只需通过NuGet包(Microsoft.AspNet.Authentication*)添加提供程序--或者您可以将通用OAuth 2.0提供程序与支持OAuth 2.0的任何其他客户端一起使用。
但是请注意,我提到的OAuth 2.0提供程序可能会对其他提供程序产生意想不到的影响,特别是当您设置CallbackPath时--不要问为什么,因为我还不知道。
现在,我只使用Microsoft和Google提供商,它们都可以很好地处理默认设置--下面可以找到我使用的作用域的示例:
Startup.cs
...
app.UseIdentity();
// External Authentication
app.UseGoogleAuthentication(options =>
{
options.ClientId = Configuration["OAuth:Google:ClientId"];
options.ClientSecret = Configuration["OAuth:Google:ClientSecret"];
options.AutomaticAuthenticate = false;
options.Scope.Add("https://www.googleapis.com/auth/userinfo.email");
options.Scope.Add("https://www.googleapis.com/auth/userinfo.profile");
//options.Scope.Add("https://www.googleapis.com/auth/plus.me");
//options.Scope.Add("https://www.googleapis.com/auth/plus.login");
});
app.UseMicrosoftAccountAuthentication(options =>
{
options.ClientId = Configuration["OAuth:MicrosoftAccount:ClientId"];
options.ClientSecret = Configuration["OAuth:MicrosoftAccount:ClientSecret"];
options.AutomaticAuthenticate = false;
options.Scope.Add("wl.emails");
options.Scope.Add("wl.basic");
//options.Scope.Add("wl.phone_numbers");
//options.Scope.Add("wl.signin");
//options.Scope.Add("wl.offline_access");
});
...有关作用域的更多信息:
https://stackoverflow.com/questions/35591604
复制相似问题