新文章 网摘 文章 随笔 日记

IdentityServer v3和Windows身份验证

总览

当我在寻找如何在IdentityServer v3中使用Windows身份验证时,很难找到结果,或者很难找到如何应用它的线索,没有OWIN插件可以轻松提供Windows身份验证。此外,使用Active Directory联合身份验证服务(ADFS)很难实现,有时也无法实现,因为网络团队可能出于任何原因拒绝应用它。

因此,需要使用NTLM Windows身份验证。在此博客中,我将展示如何将Windows身份验证OWIN中间件与IdentityServer v3附加在一起,作为附加的身份提供程序,并创建自定义的外部用户注册服务以提供完整的身份验证要求。

让我们编码

  • 首先,您必须从IdentityServer github examples下载WebHost(minimal)示例
  • 然后,确保从项目属性启用Windows身份验证,如以下屏幕截图所示:

    捕获

    Windows身份验证和匿名身份验证已启用。
  • 使用“ Install-Package GbSamples.OwinWinAuth”安装Windows身份验证Nuget软件包
  • startup.cs中注册已安装的身份提供程序以对身份服务器进行初始化
    public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            var factory = InMemoryFactory.Create(
                users: Users.Get(),
                clients: Clients.Get(),
                scopes: Scopes.Get());
    
            var options = new IdentityServerOptions
            {
                IssuerUri = "https://localhost:44333?,
                SiteName = "Ghaleb Samples Single Sign On",
                SigningCertificate = Certificate.Load(),
                Factory = factory,
                AuthenticationOptions = new AuthenticationOptions
                {
                    IdentityProviders = ConfigureAdditionalIdentityProviders,
                    EnableLocalLogin = true,
                    EnableLoginHint = true,
                },
            };
    
            appBuilder.UseIdentityServer(options);
        }
    
        public static void ConfigureAdditionalIdentityProviders(IAppBuilder app, string signInAsType)
        {
            app.UseWinAuthentication(new WinAuthenticationOptions()
            {
                SignInAsAuthenticationType = signInAsType
            });
  • 现在,当您从请求身份验证时IdentityServer,您将获得以下登录页面:

    Windows身份验证提供程序的身份服务器登录页面。

    具有Windows身份验证提供程序的身份服务器的登录页面。
  • 最后,为了能够充分利用用户声明,您将必须添加Custom External Users Registration,并将启动文件更新为:
    var factory = InMemoryFactory.Create(
    	    clients: Clients.Get(),
    	    scopes: Scopes.Get());
    	
    	// For custom users registration and reading
    	var userService = new ExternalRegistrationUserService();
    factory.UserService = new Registration<IUserService>(resolver => userService);

IdentityServer v3和Windows身份验证帖子首先出现在Ghaleb的Blog上

 

来源:https://www.codeproject.com/Articles/986772/IdentityServer-v-and-Windows-Authentication

posted @ 2020-08-03 11:29  岭南春  阅读(111)  评论(0)    收藏  举报