다음을 통해 공유


Microsoft ID 플랫폼 관련 관리자 동의

일부 권한은 테넌트 내에서 부여되기 전에 관리자의 동의가 필요합니다. 관리자 동의 엔드포인트를 사용하여 전체 테넌트에 권한을 부여할 수도 있습니다.

일반적으로 관리 동의 엔드포인트를 사용하는 애플리케이션을 빌드할 때 앱에는 관리자가 앱의 사용 권한을 승인할 수 있는 페이지 또는 보기가 필요합니다. 이 페이지는 앱 등록 흐름의 일부이거나 앱 설정의 일부이거나 전용 "연결" 흐름일 수 있습니다. 대부분의 경우 사용자가 회사 또는 학교 Microsoft 계정으로 로그인한 후에만 앱에서 이 "연결" 보기를 표시하는 것이 좋습니다.

사용자를 앱에 로그인할 때 관리자에게 필요한 권한을 승인하도록 요청하기 전에 관리자가 속한 조직을 식별할 수 있습니다. 꼭 필요한 것은 아니지만 조직 사용자를 위한 보다 직관적인 환경을 만드는 데 도움이 될 수 있습니다.

디렉터리 관리자에게 사용 권한 요청

조직 관리자의 사용 권한을 요청할 준비가 되면 Microsoft ID 플랫폼 관리자 동의 엔드포인트로 사용자를 리디렉션할 수 있습니다.

https://login.microsoftonline.com/{tenant}/v2.0/adminconsent
        ?client_id=00001111-aaaa-2222-bbbb-3333cccc4444
        &scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
        &redirect_uri=http://localhost/myapp/permissions
        &state=12345
매개 변수 조건 설명
tenant 필수 사용 권한을 요청하려는 디렉터리 테넌트입니다. GUID 또는 친숙한 이름 형식으로 제공하거나 예제와 organizations 같이 일반적으로 참조할 수 있습니다. 개인 계정은 테넌트의 컨텍스트를 제외하고 관리자 동의를 제공할 수 없으므로 '일반'을 사용하지 마세요. 테넌트를 관리하는 개인 계정과 가장 잘 호환되도록 하려면 가능하면 테넌트 ID를 사용합니다.
client_id 필수 애플리케이션(클라이언트) IDMicrosoft Entra 관리 센터 – 앱 등록 환경에서 귀하의 앱에 할당한 ID입니다.
redirect_uri 필수 리디렉션 URI는 처리할 앱에 응답을 전송하려는 위치입니다. 앱 등록 포털에 등록한 리디렉션 URI 중 하나와 정확히 일치해야 합니다.
state 권장 토큰 응답에도 반환되는 요청에 포함된 값입니다. 원하는 모든 콘텐츠의 문자열일 수 있습니다. 상태를 사용하여 인증 요청이 발생하기 전에 앱에서 사용자 상태에 대한 정보(예: 사용한 페이지 또는 보기)를 인코딩할 수 있습니다.
scope 필수 애플리케이션에서 요청하는 사용 권한 세트를 정의합니다. 정적(사용 /.default) 또는 동적 범위일 수 있습니다. 여기에는 OIDC 범위(openid, profile, email)가 포함될 수 있습니다.

이 시점에서 Microsoft Entra ID는 테넌트 관리자에게 요청을 완료하기 위해 로그인하도록 요구합니다. 관리자에게 매개 변수에서 요청한 scope 모든 권한을 승인하라는 메시지가 표시됩니다. 정적(/.default) 값을 사용한 경우 v1.0 관리자 동의 엔드포인트처럼 작동하고 필요한 권한(사용자 및 앱 모두)에 있는 모든 범위에 대한 동의를 요청합니다. 앱 권한을 요청하려면 이 값을 사용해야 /.default 합니다. 관리자가 항상 관리자 /.default동의 화면에서 지정된 권한을 볼 수 없도록 하려면 필요한 사용 권한 섹션에 사용 권한을 배치하지 않는 것이 가장 좋습니다. 대신 동적 동의를 사용하여 런타임에 동의 화면에 사용하려는 권한을 추가할 수 있습니다 /.default.

성공적인 응답

관리자가 앱에 대한 사용 권한을 승인하는 경우 성공적인 응답은 다음과 같습니다.

http://localhost/myapp/permissions
    ?admin_consent=True
    &tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee
    &scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
    &state=12345
매개 변수 설명
tenant 애플리케이션에 요청한 권한을 GUID 형식으로 부여한 디렉터리 테넌트입니다.
state 토큰 응답에도 반환될 요청에 포함된 값입니다. 원하는 모든 콘텐츠의 문자열일 수 있습니다. 상태는 인증 요청이 발생하기 전에 앱의 사용자 상태에 대한 정보를 인코딩하는 데 사용됩니다(예: 페이지 또는 보기).
scope 애플리케이션에 대한 액세스 권한이 부여된 사용 권한 집합입니다.
admin_consent 로 설정 True됩니다.

경고

매개 변수의 tenant 값을 사용하여 사용자를 인증하거나 권한을 부여하지 않습니다. 잘못된 행위자가 테넌트 ID 값을 업데이트하고 전송하여 앱에 대한 응답을 가장할 수 있습니다. 이로 인해 애플리케이션이 보안 인시던트에 노출될 수 있습니다.

오류 응답

http://localhost/myapp/permissions
        ?admin_consent=True
        &error=consent_required
        &error_description=AADSTS65004%3a+The+resource+owner+or+authorization+server+denied+the+request.%0d%0aTrace+ID%3a+0000aaaa-11bb-cccc-dd22-eeeeee333333%0d%0aCorrelation+ID%3a+8478d534-5b2c-4325-8c2c-51395c342c89%0d%0aTimestamp%3a+2019-09-24+18%3a34%3a26Z
        &state=12345

성공적인 응답에 표시된 매개 변수에 추가하면 오류 매개 변수가 아래와 같이 표시됩니다.

매개 변수 설명
error 발생하는 오류 유형을 분류하는 데 사용할 수 있고 오류에 대응하는 데 사용할 수 있는 오류 코드 문자열입니다.
error_description 개발자가 오류의 근본 원인을 식별하는 데 도움이 되는 특정 오류 메시지입니다.
state 토큰 응답에도 반환될 요청에 포함된 값입니다. 원하는 모든 콘텐츠의 문자열일 수 있습니다. 상태는 인증 요청이 발생하기 전에 앱의 사용자 상태에 대한 정보를 인코딩하는 데 사용됩니다(예: 페이지 또는 보기).
admin_consent 관리자 동의 흐름에서 이 응답이 발생했음을 나타내도록 True 설정됩니다.

다음 단계