2017-09-07 17 views
0

사용자가 Azure AD (B2C 아님)에 대해 인증 한 다음 JWT 토큰을 사용하여 WebAPI를 호출해야하는 iOS 앱을 개발 중입니다.iOS 및 Azure 용 AppAuth를 사용하는 잘못된 잠재 고객 클레임

은 내가 AppAuth 라이브러리를 사용하고 있습니다 :

OIDAuthorizationService.discoverConfiguration(forDiscoveryURL: url) { configuration, error in 
    ... 
} 

그리고

let request = OIDAuthorizationRequest(configuration: configuration, clientId:<NativeApp AppID>, scopes: [OIDScopeOpenID], redirectURL: redirectURL, responseType: OIDResponseTypeCode, additionalParameters: ["resource": "<WebAPI AppID>"]) 
OIDAuthState.authState(byPresenting: request, presenting: presentingViewController) { state, error in 
    ... 
} 

그러나 문제는, 내 JWT 토큰의 관객 주장은 내 고객의 AppID가, 아닌 AppID가의가있다 WebAPI AppID와 함께 리소스 매개 변수를 전달하더라도 WebAPI.

따라서 WebAPI는 잠재 고객 주장이 잘못되어 JWT 토큰을 거부합니다.

내 JWT 토큰의 청중이 WebAPI의 AppID라고 주장하려면 어떻게해야합니까?

+0

HTTP 추적을 검사하여 토큰을 검색하기 위해 전송되는 페이로드가 맞는지 확인할 수 있습니까? –

+0

잘못된 자원 인 AppID를 입력하면 App을 찾을 수 없다는 오류가 발생하기 때문에 보이는 것처럼 보입니다. –

+0

추가 조사에서/authorize 엔드 포인트가 호출되면 자원 매개 변수가 전달되지만/토큰 엔드 포인트가 호출 될 때 그렇지 않음을 보여줍니다. AppAuth에서 어떻게 할 수 있습니까? –

답변

0

다른 리소스에 대한 액세스를 요청할 때 Azure AD는 사용자에게 ID 토큰과 액세스 토큰을 반환합니다. ID 토큰을 사용하고 있었는데 항상 클라이언트에 설정된 청중 클레임이 있습니다. 액세스 토큰 (JWT 토큰이기도 함)을 사용하면 액세스 권한을 요청한 리소스에 대한 올바른 청중 클레임이 있습니다.

+0

토큰 교환 오류가 발생했습니다 : "작업을 완료 할 수 없습니다. OAuth 오류 : invalid_grant ", 비슷한 문제가 있습니까? – Jan