美文网首页IdentityServer4
IdentityServer4 快速入门#4:添加外部身份验证

IdentityServer4 快速入门#4:添加外部身份验证

作者: Charles2018 | 来源:发表于2020-04-27 10:47 被阅读0次

Note

对于任何先决条件(例如模板),请先查看概述。

接下来,我们将添加对外部身份验证的支持。 这真的很容易,因为您真正需要的只是一个与ASP.NET Core兼容的身份验证处理程序。

ASP.NET Core本身附带对Google,Facebook,Twitter,Microsoft帐户和OpenID Connect的支持。 另外,您可以在此处找到许多其他身份验证提供程序的实现。

添加Google支持

为了能够使用Google进行身份验证,您首先需要向他们注册。 这是在其开发人员控制台https://www.ecshop.cx/article-519.html完成的
的。 创建一个新项目,启用Google+ API,并通过在基本地址中添加/signin-google路径(例如http://localhost:5000/signin-google)来配置本地IdentityServer的回调地址。

开发者控制台将向您显示由Google发布的(ClientID)客户端ID和(Secret)机密-下一步将需要使用该ID。
将Google身份验证处理程序添加到IdentityServer主机的DI中。 这是通过将以下代码段添加到Startup中的ConfigureServices来完成的:

services.AddAuthentication()
    .AddGoogle("Google", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

        options.ClientId = "<insert here>";
        options.ClientSecret = "<insert here>";
    });

默认情况下,IdentityServer专门为外部身份验证的结果配置cookie处理程序(使用基于常量IdentityServerConstants.ExternalCookieAuthenticationScheme的方案)。 然后,Google处理程序的配置将使用该Cookie处理程序。

现在运行MVC客户端并尝试进行身份验证-您将在登录页面上看到一个Google按钮:

image.png

通过MVC客户端进行身份验证后,您可以看到声明现在从Google数据中获取。

进一步的实验

您可以添加其他外部提供程序。 我们有IdentityServer4的云托管演示版,您可以使用OpenID Connect进行集成。
将OpenId Connect处理程序添加到DI:

services.AddAuthentication()
    .AddGoogle("Google", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

        options.ClientId = "<insert here>";
        options.ClientSecret = "<insert here>";
    })
    .AddOpenIdConnect("oidc", "OpenID Connect", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
        options.SignOutScheme = IdentityServerConstants.SignoutScheme;
        options.SaveTokens = true;

        options.Authority = "https://demo.identityserver.io/";
        options.ClientId = "implicit";

        options.TokenValidationParameters = new TokenValidationParameters
        {
            NameClaimType = "name",
            RoleClaimType = "role"
        };
    });

现在,用户应该可以使用云托管的演示身份提供程序。

Note

快速入门UI自动设置外部用户。 当外部用户首次登录时,将创建一个新的本地用户,并且所有外部声明将被复制并与该新用户相关联。 但是,如何处理这种情况完全取决于您自己。 也许您想先显示某种注册UI。 默认快速入门的源代码可以在 这里找到。 可以在此处找到执行自动配置的控制器。

Source Code here

相关文章

网友评论

    本文标题:IdentityServer4 快速入门#4:添加外部身份验证

    本文链接:https://www.haomeiwen.com/subject/zqtywhtx.html