2017-12-14 4 views
0

내 웹 응용 프로그램의 공통 로그인으로 IdentityServer4를 사용하고 싶습니다.IdentityServer4 : 특정 사용자/클라이언트 조합에 대해서만 로그인 허용

모든 사용자가 모든 앱을 자유롭게 사용할 수있는 것은 아니며 모든 앱에 사용자가 액세스 할 수 없도록 거부 될 수도 있습니다.

신원 서버에 중앙 집중화 된 "이 앱이 활성화되지 않았습니다"라는 공통점이 조금 더 있습니다. 그렇게하면 해당 페이지를 한 번만 구현해야합니다. ID 서버는 어떤 사용자가 어떤 클라이언트에 액세스 할 수 있는지에 대한 지식을 가지고 있어야하지만 내 시나리오에서는 합리적입니다. 어쨌든 그들은 모두 내 응용 프로그램입니다.

올바른 위치에 테스트를 연결하는 것이 확실하지 않습니다. 사용자가 이미 액세스 권한이있는 클라이언트의 ID 서버에 이미 로그인되어있을 수 있으므로 로그인 페이지가 될 수 없습니다.

답변

2

이 방법을 사용하지 않겠지 만 앱 디자인을 모릅니다.

URL이 사용자를 혼동시킬 수 있다고 생각합니다. IdentityServer의 URL이기 때문에 이 앱은 활성화되지 않았습니다. 메시지입니다. 그게 사용자에게 무엇을 의미합니까?

게다가 IdentityServer는 사용자를 인증하기위한 것이지 사용자를 인증하는 것이 아닙니다. 그래서 이런 논리를 IdentityServer로 옮기는 것이 옳지 않은 것 같습니다. 그것은 또한 여분의 일처럼 들린다.

간단하게 유지하십시오. 리소스에 대한 승인을 유지하고 메시지가있는 페이지를 하나 만듭니다. 모든 응용 프로그램에 복사하고 나머지는 css가 수행합니다.

그리고 기본 동작을 사용하십시오. 익명 사용자가 보안 방법에 부딪히면 사용자는 자동으로 로그인 페이지로 경로가 변경됩니다. 인증 된 사용자가 액세스 권한이없는 메소드에 액세스하는 경우 기본 (앱) 계정/거부 페이지로 리 라우팅됩니다.

.AddCookie("Cookies", options => 
{ 
    options.AccessDeniedPath = "/accountdenied"; 
}) 

당신은 "이 응용 프로그램은 당신을 위해 작동하지 않습니다" 페이지를 표시 할 수 있습니다, 또는 당신이 거기에서 가서에 코드를 재 지정할 수 있습니다 :

당신은 당신의 시작 구성을 경로를 재정의 할 수 있습니다 IdentityServer 페이지 페이지를 사용자 정의하기위한 추가 정보를 추가 할 수 있습니다.

대신 IdentityServer의 페이지를 입력하여 디자인에 더 적합 할 수도 있습니다. 나는 그것을 시도하지 않았다, 그래서 나는 그것이 가능한지 모른다.

하지만 어쨌든 나는 응용 프로그램에 인증 논리를 유지할 것입니다.

+0

좋은 조언 인 것처럼 보이며 나는이 시점에서 확신이 없습니다. 나는 더 많은 중앙 집중화 된 사용자 관리 (어떤 사용자/계정과 어떤 권한을 갖고 있는지에 대해 어떤 앱이 활성화되어 있는지)를 더 많이 가지고 있기 때문에 중앙 집중화를 할 생각이었습니다. 필자의 시나리오에서는 모든 앱에 고유 한 사용자/계정 관련 UI가없는 것이 합리적입니다. 어쨌든 각 앱마다 그런 페이지가 필요하다고 생각하지 않았다. 나는 앱 별 액세스 거부 페이지를 보여 주기만하면된다. – John