我目前正在使用ASP.NET核心MVC6构建一个Web应用程序并使用新的Identity模型。不幸的是,目前没有很多关于这个主题的文档,我想实现社会认证。在确定如何使用MVC6 / Identity实现此功能时,最好的方法是什么?
答案 0 :(得分:1)
与Joe Audette一样,提到了很好的文档:Enabling authentication using external providers。
有Facebook的例子,但你可以添加微软,谷歌和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");
});
...
有关范围的更多信息: