OIDC(OpenID Connect) 표준의 일부로 UserInfo 엔드포인트는 인증된 사용자에 대한 정보를 반환합니다.
.잘 알려진 구성 엔드포인트 찾기
에서 OpenID 구성 문서의 필드를 읽 userinfo_endpoint
어 프로그래밍 방식으로 UserInfo 엔드포인트를 찾을 수 있습니다 https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
. 애플리케이션에서 UserInfo 엔드포인트를 하드 코딩하지 않는 것이 좋습니다. 대신 OIDC 구성 문서를 사용하여 런타임에 엔드포인트를 찾습니다.
UserInfo 엔드포인트는 일반적으로 OIDC 규격 라이브러리 에 의해 자동으로 호출되어 사용자에 대한 정보를 가져옵니다. OIDC 표준에서 식별된 클레임 목록에서 Microsoft ID 플랫폼은 사용 가능하고 동의한 경우 이름 클레임, 주체 클레임 및 전자 메일을 생성합니다.
대신 ID 토큰을 사용하는 것이 좋습니다.
ID 토큰의 정보는 UserInfo 엔드포인트에서 사용할 수 있는 정보의 상위 집합입니다. Id 토큰을 동시에 가져와 UserInfo 엔드포인트를 호출할 수 있으므로 UserInfo 엔드포인트를 호출하는 대신 토큰에서 사용자의 정보를 가져오는 것이 좋습니다. UserInfo 엔드포인트를 호출하는 대신 ID 토큰을 사용하면 최대 두 개의 네트워크 요청이 제거되어 애플리케이션의 대기 시간이 줄어듭니다.
관리자 또는 직종과 같은 사용자에 대한 자세한 정보가 필요한 경우 Microsoft Graph /user
API를 호출합니다.
선택적 클레임을 사용하여 ID 및 액세스 토큰에 추가 사용자 정보를 포함할 수도 있습니다.
UserInfo 엔드포인트 호출
UserInfo는 Microsoft Graph에서 호스팅하는 표준 OAuth 전달자 토큰 API입니다. 애플리케이션이 Microsoft Graph에 대한 액세스를 요청할 때 받은 액세스 토큰을 사용하여 Microsoft Graph API를 호출하는 것처럼 UserInfo 엔드포인트를 호출합니다. UserInfo 엔드포인트는 사용자에 대한 클레임을 포함하는 JSON 응답을 반환합니다.
권한
UserInfo API를 호출하려면 다음 OIDC 권한을 사용합니다. 클레임이 openid
필요하며 범위는 profile
email
응답에 추가 정보가 제공되도록 합니다.
권한 유형 | 권한 |
---|---|
위임됨(회사 또는 학교 계정) |
openid (필수), profile , email |
위임됨 (개인 Microsoft 계정) |
openid (필수), profile , email |
신청 | 해당 없음 |
팁 (조언)
브라우저에서 이 URL을 복사하여 UserInfo 엔드포인트 및 ID 토큰에 대한 액세스 토큰을 가져옵니다. 클라이언트 ID 및 리디렉션 URI를 앱 등록의 값으로 바꿉니다.
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<yourClientID>&response_type=token+id_token&redirect_uri=<YourRedirectUri>&scope=user.read+openid+profile+email&response_mode=fragment&state=12345&nonce=678910
다음 섹션의 쿼리에서 반환되는 액세스 토큰을 사용할 수 있습니다.
Microsoft Graph는 앱의 읽기 또는 유효성 검사 기능에 영향을 미칠 수 있는 특수 토큰 발급 패턴을 사용합니다. 다른 Microsoft Graph 토큰과 마찬가지로 여기에서 받은 토큰은 JWT가 아닐 수 있으며 앱은 불투명한 것으로 간주해야 합니다. Microsoft 계정 사용자에 로그인한 경우 암호화된 토큰 형식이 됩니다. 그러나 이러한 요소는 UserInfo 엔드포인트에 대한 요청에서 액세스 토큰을 사용하는 앱의 기능에 영향을 주지 않습니다.
API 호출
UserInfo API는 GET 및 POST 요청을 모두 지원합니다.
GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…
UserInfo 응답
{
"sub": "OLu859SGc2Sr9ZsqbkG-QbeLgJlb41KcdiPoLYNpSFA",
"name": "Mikah Ollenburg", // all names require the “profile” scope.
"family_name": " Ollenburg",
"given_name": "Mikah",
"picture": "https://graph.microsoft.com/v1.0/me/photo/$value",
"email": "mikoll@contoso.com" // requires the “email” scope.
}
응답에 표시된 클레임은 모두 UserInfo 엔드포인트가 반환할 수 있는 클레임입니다. 이러한 값은 ID 토큰에 포함된 값과 동일합니다.
UserInfo 엔드포인트에 대한 참고 사항 및 주의 사항
UserInfo 엔드포인트에서 반환하는 정보를 추가하거나 사용자 지정할 수 없습니다.
인증 및 권한 부여 중에 ID 플랫폼에서 반환된 정보를 사용자 지정하려면 클레임 매핑 및 선택적 클레임 을 사용하여 보안 토큰 구성을 수정합니다.