2017-10-25 3 views
0

(아래 예제의 모든 ID가 만들어 졌으므로 몇 가지 매개 변수의 형식을 설명하기 위해이 ID를 추가했습니다).여권 - 하늘색 - 광고 : 왜 "jwt 잠재 고객이 유효하지 않습니다"?

내 거주자가 acme.co.uk에 있지만, 배포 한 웹 앱을 https://subdomain.acme2.co.uk에두고 Azure AD에 사용자 인증을 위임하고 싶습니다.

다음과 같이 new portal : 을 사용하여 앱을 등록했습니다. 필드 이름은 하늘색 포털에서 사용 된 것입니다.

앱 ID의 URL : https://acme.co.uk/11111111-2222-3333-4444-555555555555

홈 페이지 URL : https://subdomain.acme2.co.uk/api/auth/aad

회신 된 URL : https://subdomain.acme2.co.uk/api/auth/aad/callback

와 값으로 만료되지 않습니다 비밀 키를 생성 : '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa ='

나는 passport-azure-ad github sample using v1 endpoint을 지침으로 삼았습니다. 내가 어떻게 'https://subdomain.acme2.co.uk/api/auth/aad/callback'로 리디렉션 다시 내가 다음 할 수있는 로그인 MS에 리디렉션 브라우저에서 'https://subdomain.acme2.co.uk/api/auth/aad',하지만 경우에 도착했을 때

{ 
    allowHttpForRedirectUrl: false, 
    clientID: 'https://acme.co.uk/11111111-2222-3333-4444-555555555555', 
    clientSecret: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa=', 
    identityMetadata: 'https://login.microsoftonline.com/acme.co.uk/.well-known/openid-configuration', 
    isB2C: false, 
    issuer: null, 
    loggingLevel: 'info', 
    passReqToCallback: false, 
    redirectUrl: 'https://subdomain.acme2.co.uk/api/auth/aad/callback', 
    responseMode: 'form_post', 
    responseType: 'code id_token', 
    skipUserProfile: true, 
    useCookieInsteadOfSession: false, 
    validateIssuer: true 
} 

는 내가 인증 아니에요.

내가 볼 콜백 POST 요청에서 헤더를 검사 :

In _validateResponse: jwt audience is invalid. expected: https://acme.co.uk/11111111-2222-3333-4444-555555555555,spn:https://acme.co.uk/11111111-2222-3333-4444-555555555555 

내가 잘못 무슨 짓을했는지 어떤 아이디어 ??? [: - |

(단점 : 디버거가 작동하지 않아 리디렉션이 제대로 작동하지 않아 실제 환경 ATM에 배포해야합니다.)

+1

이 하나 https://github.com/AzureAD/passport-azure-ad/issues/309? 부수적으로, 리디렉션은 일반 302입니다. 브라우저에서 도킹 된 응용 프로그램에 액세스 할 수 있으면 리디렉션이 작동해야합니다. –

+2

디버깅 측면에서 크롬 개발 도구, 네트워크 탭과 같은 것을 사용하여 "로그 보존"을 활성화하고 login.microsoftonline.com으로 전송 된 'state'쿼리 문자열 매개 변수와 'https : // subdomain.acme2.co.uk/api/auth/aad/callback'. –

+0

정보 주셔서 감사합니다. 그래, 그 문제를 보았지만 불행히도 나는 최신 버전 (3.0.8)이다. 나는 쿼리 문자열 상태 값을 응답 '양식 데이터'-> '상태'와 비교했으며 정확히 같았고 (볼 URL 인코딩이 없음) –

답변