如何申请SSO(单点登录)

时间:2017-05-04 17:06:19

标签: sql asp.net authentication authorization single-sign-on

我已经在ASP.NET& amp; SQL。每个应用程序都有他的私人用户表“凭证”来授权用户登录。

如何应用SSO解决方案来覆盖5应用程序?知道同一用户在每个应用程序上具有不同的访问凭证“用户名和密码”对于5应用程序上的同一用户不同。

如果有任何第三方工具可以做到这一点而不改变5应用程序上的任何东西,将会非常好。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将Identity Server用于此目的(此处https://identityserver.github.io/Documentation/docsv2/是版本3的文档,您可以在那里找到如何在APP中运行授权)。

身份服务器提供 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;
    }
}

YourUserService 将实现 IUserService (由Identity Server提供),您可以在方法 AuthenticateLocalAsync GetProfileDataAsync 您可以使用自己的逻辑进行身份验证。

在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您可以使用自己的UserService

找到一些此类例子

此处https://github.com/IdentityServer/IdentityServer3.Samples是如何使用Identity Server的更多示例。

唯一不好的是,在每个应用程序中,您必须使用Identity Server作为身份验证服务进行配置,因此您必须更改现有应用程序。