如何申请SSO(单点登录)
How to apply SSO (single sign on)
我已经在 ASP.NET 和 SQL 下开发了 5 asp.net 个应用程序。每个应用程序都有他的私人用户表 "credential" 来授权用户登录。
如何应用一个SSO解决方案来覆盖5个应用程序?知道同一个用户在每个应用程序上有不同的访问凭据 "The username & Password" 对于第 5 个应用程序上的同一个用户来说不一样。
此外,如果有任何第三方工具可以在不更改 5 应用程序上的任何内容的情况下执行此操作,那就太好了。
谢谢。
您可以为此目的使用 Identity Server(此处 https://identityserver.github.io/Documentation/docsv2/ 是版本 3 的文档,您可以在那里找到如何在您的应用程序中 运行 授权)。
身份服务器提供 IdentityServerOptions 对象,您可以在其中定义一些内容。但对您来说最重要的是 Factory 属性 您可以在其中配置 Identity Server 行为。
示例如下:
public class Factory
{
public static IdentityServerServiceFactory Create()
{
var factory = new IdentityServerServiceFactory();
// Users are taken from custom UserService which implements IUserService
var userService = new YourUserService();
factory.UserService = new Registration<IUserService>(resolver => userService);
// Custom view service, for custom login views
factory.ViewService = new Registration<IViewService>(typeof(YourViewService));
// Register for Identity Server clients (applications which Identity Server recognize and scopes
factory.UseInMemoryClients(Clients.Get());
factory.UseInMemoryScopes(Scopes.Get());
return factory;
}
}
Where YourUserService 将实现 IUserService(由 Identity Server 提供),您可以在方法中根据需要授权用户 AuthenticateLocalAsync 和 GetProfileDataAsync 您可以执行自己的身份验证逻辑。
并在 Startup class 中使用 Factory 用于 Identity Server 项目
public void Configuration(IAppBuilder app)
{
var options = new IdentityServerOptions
{
SiteName = "IdentityServer",
SigningCertificate = LoadCertificate(),
EnableWelcomePage = false,
Factory = Factory.Create(),
AuthenticationOptions = new AuthenticationOptions
{
EnablePostSignOutAutoRedirect = true,
EnableSignOutPrompt = false,
},
};
app.UseIdentityServer(options);
}
在这里https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/CustomUserService你可以找到一些使用自己的用户服务的例子
此处 https://github.com/IdentityServer/IdentityServer3.Samples 还有更多使用 Identity Server 的示例。
唯一不好的是,在每个应用程序中,您必须使用 Identity Server 作为身份验证服务进行配置,因此您必须更改现有应用程序。
我已经在 ASP.NET 和 SQL 下开发了 5 asp.net 个应用程序。每个应用程序都有他的私人用户表 "credential" 来授权用户登录。
如何应用一个SSO解决方案来覆盖5个应用程序?知道同一个用户在每个应用程序上有不同的访问凭据 "The username & Password" 对于第 5 个应用程序上的同一个用户来说不一样。
此外,如果有任何第三方工具可以在不更改 5 应用程序上的任何内容的情况下执行此操作,那就太好了。
谢谢。
您可以为此目的使用 Identity Server(此处 https://identityserver.github.io/Documentation/docsv2/ 是版本 3 的文档,您可以在那里找到如何在您的应用程序中 运行 授权)。
身份服务器提供 IdentityServerOptions 对象,您可以在其中定义一些内容。但对您来说最重要的是 Factory 属性 您可以在其中配置 Identity Server 行为。
示例如下:
public class Factory
{
public static IdentityServerServiceFactory Create()
{
var factory = new IdentityServerServiceFactory();
// Users are taken from custom UserService which implements IUserService
var userService = new YourUserService();
factory.UserService = new Registration<IUserService>(resolver => userService);
// Custom view service, for custom login views
factory.ViewService = new Registration<IViewService>(typeof(YourViewService));
// Register for Identity Server clients (applications which Identity Server recognize and scopes
factory.UseInMemoryClients(Clients.Get());
factory.UseInMemoryScopes(Scopes.Get());
return factory;
}
}
Where YourUserService 将实现 IUserService(由 Identity Server 提供),您可以在方法中根据需要授权用户 AuthenticateLocalAsync 和 GetProfileDataAsync 您可以执行自己的身份验证逻辑。
并在 Startup class 中使用 Factory 用于 Identity Server 项目
public void Configuration(IAppBuilder app)
{
var options = new IdentityServerOptions
{
SiteName = "IdentityServer",
SigningCertificate = LoadCertificate(),
EnableWelcomePage = false,
Factory = Factory.Create(),
AuthenticationOptions = new AuthenticationOptions
{
EnablePostSignOutAutoRedirect = true,
EnableSignOutPrompt = false,
},
};
app.UseIdentityServer(options);
}
在这里https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/CustomUserService你可以找到一些使用自己的用户服务的例子
此处 https://github.com/IdentityServer/IdentityServer3.Samples 还有更多使用 Identity Server 的示例。
唯一不好的是,在每个应用程序中,您必须使用 Identity Server 作为身份验证服务进行配置,因此您必须更改现有应用程序。