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身份验证提供程序的身份服务器的登录页面。 - 最后,为了能够充分利用用户声明,您将必须添加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


浙公网安备 33010602011771号