2017-05-04 115 views
0

我已經有一個5開發的asp.net應用程序,在ASP.NET & SQL下開發。每個應用程序都有他的私人用戶表「憑證」來授權登錄用戶。如何申請SSO(單點登錄)

如何應用SSO解決方案來涵蓋5應用程序?知道同一用戶在每個應用程序上具有不同的訪問憑證「用戶名&密碼」與5應用程序上的同一用戶不同。

如果有任何第三方工具可以做到這一點,而不需要改變5應用程序上的任何東西,將會非常好。

謝謝。

+1

如果用戶在系統之間有不同的ID,您如何知道系統A上的哪個用戶記錄對應於系統B上的用戶記錄?例如。你能搭配SSN還是其他一些自然鑰匙?還是有一張主表將它們連接在一起? –

+0

其實現在沒有主表,但我們公司有活動目錄。 –

+1

要麼需要跨系統共享某些數據項,要麼必須爲用戶提供用戶界面以將現有帳戶與其SSO配置文件關聯。你打算走哪條路? –

回答

0

您可以爲此使用Identity Server(這裏的https://identityserver.github.io/Documentation/docsv2/是版本3的文檔,您可以在那裏找到如何在您的APP中運行授權)。

身份服務器提供IdentityServerOptions對象,您可以在其中定義一些東西。但是對於您來說最重要的是工廠屬性,您可以在其中配置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將implemtent IUserService(由Identity Server提供),在那裏你可以授權你需要怎樣的用戶,在方法AuthenticateLocalAsyncGetProfileDataAsync可以做你自己的認證邏輯。在啓動類使用對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作爲身份驗證服務進行配置,因此您必須更改現有的應用程序。

+0

謝謝,我會試試 –