Rob*_*lls 10 asp.net-mvc asp.net-identity asp.net-core identityserver4
如何将现有的asp.net MVC应用程序与单独的IdentityServer应用程序集成?
我有一个现有的asp.net MVC站点使用身份2.0进行身份验证.
我现在有第二个运行asp.net Core 1.1的应用程序,它提供与客户端(移动)应用程序通信的API.
我需要在所有3个应用程序中共享身份验证.
从我读过的内容来看,我需要添加SSO,IdentityServer似乎是一个很好的解决方案.我计划将IdentityServer设置为第四个应用程序,并将其连接到新的.net API应用程序和客户端应用程序.
但我找不到任何关于如何让我现有的Asp.net应用程序使用新的身份服务器进行身份验证的示例.
您将陈述4个申请。
IdentityServer4应用程序用于身份和访问控制。这将是SSO服务和STS(安全令牌服务)的权限。从今天开始,您将在ASP.NET core 1.1中构建它。要成为SSO,您当然需要拥有一个用户数据库。使用ASP.NET Identity可以很好地工作,并且可以与IdentityServer很好地集成。
您所说的Web API正在运行ASP.NET Core 1.1。用OAuth术语来说,这称为API资源。您可以将此API细分为可单独保护的部分,称为API Scopes。
现有的MVC Web应用程序与您当前的用户数据库在ASP.NET Identity中。这将是IdentityServer授权的客户端(上面的#1)。您可以使用授权码流(更安全),也可以选择隐式或混合流。在其官方文档中可以找到有关如何将ASP.NET MVC Web应用程序设置为IdentityServer实例的客户端的示例:http : //docs.identityserver.io/en/latest/quickstarts/3_interactive_login.html#creating- an-mvc-client。
本质上,你
(a)向IdentityServer注册客户端,然后
(b)在客户端应用中添加一些启动代码,以告知其使用IdentityServer进行身份验证-类似于以下内容...
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "oidc",
SignInScheme = "Cookies",
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,
ClientId = "mvc",
SaveTokens = true
});
Run Code Online (Sandbox Code Playgroud)
此时,您可以同时使用内部用户数据库和外部IdentityServer进行登录-也就是说,您可以通过两种不同的方式登录MVC Web应用程序。IdentityServer应用程序可以被视为您的MVC Web应用程序的“外部提供程序”。
您是否要将现有的用户名和密码(以及角色等)迁移到新的IdentityServer实例/数据库?要在各个应用程序之间实现SSO和共享身份以及访问控制,必须回答“是”。
仅当用户使用IdentityServer应用程序登录时,才可以使用SSO。但是,您可能实际上无法实现SSO,因为他们在台式机上使用浏览器,在电话上使用移动应用程序-无法真正跨设备共享Cookie或令牌。
| 归档时间: |
|
| 查看次数: |
5316 次 |
| 最近记录: |