2017-05-04 8 views
0

나는 ASP.NET & SQL에서 개발 한 5 개의 asp.net 응용 프로그램을 이미 가지고 있습니다. 각 응용 프로그램에는 로그인시 사용자를 인증하는 개인 사용자 테이블 "자격 증명"이 있습니다.SSO (싱글 사인온) 적용 방법

5 응용 프로그램을 다루기 위해 SSO 솔루션을 어떻게 적용 할 수 있습니까? 동일한 사용자가 각 응용 프로그램에서 서로 다른 액세스 권한 정보를 가지고 있음을 알면 "사용자 이름 & 암호"가 5 응용 프로그램의 동일한 사용자와 같지 않습니다.

또한 5 응용 프로그램에서 아무 것도 변경하지 않고 제 3 자 도구가 있으면 매우 좋을 것입니다.

감사합니다.

+1

사용자가 시스템간에 서로 다른 ID를 갖는 경우 시스템 A의 사용자 레코드가 시스템 B의 사용자 레코드에 해당하는지 어떻게 알 수 있습니까? 예 : SSN 또는 다른 자연 키로 일치시킬 수 있습니까? 아니면 모두 함께 결합하는 마스터 테이블이 있습니까? –

+0

실제로 현재 마스터 테이블이 없지만 우리 회사에는 활성 디렉토리가 있습니다. –

+1

시스템간에 공통적 인 데이터 항목이 필요하거나 사용자가 기존 계정을 SSO 프로필에 연결하기위한 사용자 인터페이스를 제공해야합니다. 어느쪽으로 가셨습니까? –

답변

0

이 목적으로 Identity Server를 사용할 수 있습니다. 여기서 https://identityserver.github.io/Documentation/docsv2/은 버전 3에 대한 설명서이며 APP에서 권한 부여를 실행하는 방법을 찾을 수 있습니다.

신원 확인 서버는 신원 확인 서버 개체를 정의 할 수 있습니다. 그러나 가장 중요한 요소는 Identity Server 동작을 구성 할 수있는 출하시 속성입니다. GetProfileDataAsync 당신이 할 수있는

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; 
    } 
} 

YourUserServiceIUserService (신원 Server에서 제공) implemtent 것입니다 당신이 방법 AuthenticateLocalAsync에서 당신이 필요로 어떻게 사용자를 인증 할 수 있습니다 : 여기

은 예입니다 자신의 논리를 인증에 사용하십시오. 당신이 사용하는 자신의 UserService의 일부 exmaple을 찾을 수 있습니다 여기에

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 Identity Server를 프로젝트에 대한 시작 클래스의 공장의 사용

그리고

또한 여기 https://github.com/IdentityServer/IdentityServer3.Samples 더 많은 예제 방법은 Identity Server에 대한 작업

모든 응용 프로그램에서 Identity Server를 인증 서비스로 구성해야만 기존 응용 프로그램을 변경해야한다는 것이 좋습니다.

+0

감사합니다. 시도해 보겠습니다. –