我已經有一個5開發的asp.net應用程序,在ASP.NET & SQL下開發。每個應用程序都有他的私人用戶表「憑證」來授權登錄用戶。如何申請SSO(單點登錄)
如何應用SSO解決方案來涵蓋5應用程序?知道同一用戶在每個應用程序上具有不同的訪問憑證「用戶名&密碼」與5應用程序上的同一用戶不同。
如果有任何第三方工具可以做到這一點,而不需要改變5應用程序上的任何東西,將會非常好。
謝謝。
我已經有一個5開發的asp.net應用程序,在ASP.NET & SQL下開發。每個應用程序都有他的私人用戶表「憑證」來授權登錄用戶。如何申請SSO(單點登錄)
如何應用SSO解決方案來涵蓋5應用程序?知道同一用戶在每個應用程序上具有不同的訪問憑證「用戶名&密碼」與5應用程序上的同一用戶不同。
如果有任何第三方工具可以做到這一點,而不需要改變5應用程序上的任何東西,將會非常好。
謝謝。
您可以爲此使用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提供),在那裏你可以授權你需要怎樣的用戶,在方法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作爲身份驗證服務進行配置,因此您必須更改現有的應用程序。
謝謝,我會試試 –
如果用戶在系統之間有不同的ID,您如何知道系統A上的哪個用戶記錄對應於系統B上的用戶記錄?例如。你能搭配SSN還是其他一些自然鑰匙?還是有一張主表將它們連接在一起? –
其實現在沒有主表,但我們公司有活動目錄。 –
要麼需要跨系統共享某些數據項,要麼必須爲用戶提供用戶界面以將現有帳戶與其SSO配置文件關聯。你打算走哪條路? –