2017-12-19 36 views
0

IdentityServer 4 및 Angular 5.0과 함께 asp.net 코어 2.0을 사용하고 있습니다.callback/redirect_url이 clientside 경로로 라우트하여 재귀 호출을 허용 함

내 프로젝트는이 샘플을 기반으로합니다 : 사용자가 성공적인 로그인하면

https://github.com/scottbrady91/Angular4-OidcClientJs-Example

그는 결정 권한 콜백로 리디렉션됩니다. 클라이언트 측 경로를 호출 할 때 스콧 Brady`s 샘플에서

:

{ 
    path: 'auth-callback', 
    component: AuthCallbackComponent, 
    }, 

지금까지 모든 작동합니다.

하지만 실제 응용 프로그램에는 경로가 보호되어 있습니다.

{ 
     path: 'auth-callback', 
     component: AuthCallbackComponent, 
     **canActivate: [AuthGuardService]** 
     }, 

지금 내가 다시 서버 측 권한 부여 엔드 포인트에 대한 인증 - 콜백 서버 측 권한 부여 엔드 포인트에서 재귀 리디렉션을 얻을 :

그래서 나는 위의 샘플을 변경했습니다.

모든 것이 빠르게 소스 파일과 함께 주위를 점프 때문에 브라우저에서 디버깅도 할 수없는 ... 정식-콜백 ROUTE 모습하도록되어 무엇

  1. ? 보호받지 못했나? 내가 말했듯이 나는 길만 보호했다.
  2. 재귀가 멈추는 Scott Brady의 샘플에서 수정해야 할 사항은 무엇입니까?

은 내가 auth.aervice.ts에서 사용자 필드가 트리거되는 auth.guard.ts.isLoggedIn() 함수 이후에 null 인 것을 발견,하지만 전화가 사용자에 대한 null을 반환 이유를 모르겠어요 . null 사용자 문제는 이전에 auth-callback을 사용하는 것과 같습니다.

답변

0

저는 자바 스크립트 클라이언트로 일한 적이 없으므로 구성을 도와 드릴 수 없습니다. 하지만 내가이 문제를 해결하도록 도울 수있을 것 같아.

문제는 모든 경로가 보호되고 있다는 것을 짐작 하셨을 것입니다. 그러나 사용자가 아직 로그인하지 않았기 때문에 일부 경로를 보호 할 수 없습니다. 로그인 페이지와 마찬가지로 auth-callback 경로와 액세스가 거부 된 경로입니다.

auth-callback 경로에 도달 할 수 없기 때문에 사용자는 아직 인증되지 않았고 결코 존재하지 않으므로 사용자는 기본 AccessDenied 페이지로 리디렉션됩니다. 나는 이것이 /Account/AccessDenied이라고 생각합니다. 어떤 보호를 받고 다시 신원을 확인해야합니다.

/Account/AccessDenied 경로와 auth-callback 경로에 대한 익명 액세스를 허용하면 문제가 해결 된 것 같습니다.

첫 번째는 실제로 사용자에 로그인하고 두 번째는 재귀를 중지합니다.

/Account/AccessDenied 코드에서 응답 방법을 결정할 수 있습니다. 클레임이 누락 된 경우 인증 된 사용자도 여기에 오게됩니다. 사용자는 인증되었지만 관리자가 아닙니다. 또는 사용자가 인증되었지만이 웹 사이트에 대한 클레임이 없습니다.

+0

나는 이미 그것을 해결했습니다!/Account와 관련이 없습니다.리디렉션 uri =>/signin-oidc을 보호하지 않으려면 userManager.completeAuthentication.then (router.navigate (/ urltowhichIwantedbefore))을 호출하고 SigninOidcComponent에서 다음과 같이합니다 .-) – Elisabeth