0

멀티 테넌트 애플리케이션에 OAuth 2.0 Authorization Code Flow을 구현하려고합니다.OAuth 2.0에서 액세스 토큰을 가져올 수 없습니다. 인증 코드 흐름

나는 제 login.microsoftonline.com/organizations/oauth2/v2.0/authorize"오픈 ID 프로파일 이메일" 범위에 대한 인증을 요청하고 login.microsoftonline.com/organizations/oauth2/v2.0/token

에 액세스 토큰 제가 grant_type=authorization_code 함께 얻어진 코드 CLIENT_ID, client_secret, redirect_uri로 사용

내가받은 응답은 id_token이고 token_type=Bearer입니다. 왜 access_tokenexpired_at 필드가 제공되지 않았습니까?

토큰 호출에서 다시 범위를 제공하려고했지만 응답이 다시 돌아 왔습니다. spec에는 액세스 토큰이 있어야한다고 나와 있습니다. 나는 또한 일반적인 종점을 시도했지만 모든 것이 동일하다.

+0

무기명 토큰은 액세스 토큰입니다. – BenV

답변

1

Azure AD v2.0 끝점을 사용 중입니다. 당신은 당신의 URL이 v2.0이라는 사실에 의해 이것을 알 수 있습니다.

v2.0 엔드 포인트에서 id_token (즉, openid 프로필 이메일)에 포함 된 범위를 요청하고 다른 범위 (예 : https://outlook.office.com/contacts.read)를 요청하지 않으면 id_token 만 반환됩니다. 이것은 사실 Azure AD에게 프로필 정보 만 원하고 어떤 apis와도 대화하지 않으므로 액세스 토큰이 필요하지 않다는 사실 때문에 말입니다.

반면에 API에 대한 범위 (예 : https://outlook.office.com/contacts.read)를 포함하면 access_code가 반환됩니다.

+0

Discovery API 및 Drop Box for Business API에 액세스하려고했지만 https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2에서 v2.0 끝점에서 지원되지 않는 것으로 보입니다. - 제한/대신 v1.0 끝점을 사용해야합니다. – bugzpodder

관련 문제