애플리케이션 등록
연습 - 애플리케이션 등록
앱이 Microsoft Entra 외부 ID로 로그인할 수 있도록 하려면 디렉터리에 애플리케이션을 등록해야 합니다.
참고 항목
애플리케이션을 등록하려면 최소한 애플리케이션 개발자 디렉터리 역할이 필요합니다.
이 역할은 권한 있는 역할입니다. 권한 있는 역할을 사용하기 위한 모범 사례에 관해 읽어 보세요.
의견이 있으신가요? 여러분의 개념 증명 프로젝트가 어떻게 진행되고 있는지 알려 주세요. 귀하의 의견을 듣고 싶습니다.
사용자 고유의 애플리케이션을 등록하려면 Microsoft Entra 관리 센터에 로그인하고 애플리케이션>앱 등록으로 이동합니다. 그런 다음, + 새 등록을 선택합니다.
표시되는 애플리케이션 등록 페이지에서 앱 사용자에게 표시되는 의미 있는 애플리케이션 이름(예 : Woodgrove Groceries)을 입력합니다. 지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다. 플랫폼의 경우 웹 옵션을 선택하고 앱 리디렉션 URI를 입력합니다. 리디렉션 URI는 Microsoft Entra 외부 ID에 대한 인증이 완료된 후 사용자가 Microsoft Entra 외부 ID로 리디렉션되는 엔드포인트입니다.
성공적으로 등록되면 애플리케이션의 개요 창이 표시됩니다. 애플리케이션 소스 코드에 사용할 애플리케이션(클라이언트) ID를 기록해 둡니다.
리디렉션 URI 또는 프런트 채널 로그아웃 URL을 더 추가하려면 관리에서 인증을 선택합니다. 프런트 채널 로그아웃 URL은 애플리케이션이 사용자의 세션 데이터를 지우도록 요청을 보내는 위치입니다. Single Sign-Out이 올바르게 작동하는 데 필요합니다.
웹 애플리케이션(기밀 클라이언트)이 액세스 토큰을 획득하려면 Microsoft Entra ID에 대한 ID를 증명하기 위한 자격 증명이 필요합니다. 인증서, 클라이언트 암호(문자열) 또는 페더레이션된 ID 자격 증명을 기밀 클라이언트 앱 등록에 대한 자격 증명으로 추가할 수 있습니다. 식료품 웹 사이트의 경우 인증서를 사용합니다. 인증서를 추가하려면 인증서 및 비밀>인증서>인증서 업로드를 선택합니다.
업로드하려는 파일을 선택합니다. .cer, .pem, .crt 파일 형식 중 하나여야 합니다. 그런 다음, 추가를 선택합니다.
다음 단계에서는 웹 애플리케이션에 필요한 권한을 추가합니다. 관리에서 API 권한을 선택한 다음, 권한 추가를 선택합니다.
API 권한 요청에서 Microsoft API 탭을 선택한 다음, Microsoft Graph를 선택합니다.
위임된 권한 옵션을 선택합니다. 그런 다음 권한 선택 섹션에서 openid 및 offline_access 권한을 검색하여 선택합니다. 완료하려면 권한 추가를 선택합니다.
이제 권한이 올바르게 할당되었습니다. 테넌트는 외부 테넌트이므로 소비자 사용자 자신은 이러한 권한에 동의할 수 없습니다. 관리자는 테넌트의 모든 사용자를 대신하여 다음 권한에 동의해야 합니다.
<your tenant name>
에 관리자 동의 부여를 선택한 다음, 예를 선택합니다.모두 완료되었습니다. 이제 애플리케이션을 사용할 준비가 되었습니다.
1. 애플리케이션 등록
웹 애플리케이션을 등록하려면 아래 Microsoft Graph 요청을 사용하고 다음 값을 바꿉니다.
displayName의 값을 앱 표시 이름으로 바꿉니다. 예를 들어 Woodgrove Groceries입니다.
redirectUris의 값을 애플리케이션의 리디렉션 URI로 바꿉니다. 예들 들어 https://woodgrovedemo.com/signin-oidc입니다. 또한 https://www.jwt.ms/을 사용할 수 있습니다.
POST https://graph.microsoft.com/v1.0/applications { "displayName": "Woodgrove Groceries", "description": "Woodgrove Groceries live demo application", "signInAudience": "AzureADMyOrg", "api": { "acceptMappedClaims": true, "requestedAccessTokenVersion": 2 }, "requiredResourceAccess": [ { "resourceAppId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "resourceAccess": [ { "id": "b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2", "type": "Scope" }, { "id": "c2c2c2c2-dddd-eeee-ffff-a3a3a3a3a3a3", "type": "Scope" } ] } ], "web": { "redirectUris": [ "https://woodgrovedemo.com/signin-oidc" ], "implicitGrantSettings": { "enableAccessTokenIssuance": false, "enableIdTokenIssuance": false } } }
1.1 애플리케이션 ID 복사
응답에서 appId의 값을 복사합니다. 예시:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"displayName": "Woodgrove Groceries",
"description": "Woodgrove Groceries live demo application",
...
}
2. 애플리케이션의 서비스 주체 만들기
애플리케이션을 등록한 후 서비스 주체를 만듭니다. 다음 Graph 호출은 서비스 주체를 만듭니다. {appId}를 개체 ID가 아닌 이전 호출의 appId로 바꿉니다.
POST https://graph.microsoft.com/v1.0/servicePrincipals
{
"appId": "{appId}"
}
2.1 서비스 주체 ID 복사
응답에서 id의 값을 복사합니다. 예를 들면 다음과 같습니다.
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals/$entity",
"id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"displayName": "Woodgrove Groceries",
"description": "Woodgrove Groceries live demo application",
...
}
3. 필요한 권한에 동의
테넌트는 외부 테넌트이므로 소비자 사용자 자신은 이러한 권한에 동의할 수 없습니다. 관리자는 테넌트의 모든 사용자를 대신하여 다음 권한에 동의해야 합니다.
3.1 Microsoft Graph의 서비스 주체 ID 가져오기
다음 GET 요청을 실행하고 응답에서 ID를 복사합니다.
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='22223333-cccc-4444-dddd-5555eeee6666')
{
"id": "cccccccc-2222-3333-4444-dddddddddddd",
"appDisplayName": "Microsoft Graph",
"appId": "22223333-cccc-4444-dddd-5555eeee6666"
}
3.2 필요한 사용 권한 부여
{service-principal-id}를 이전 단계에서 복사한 service-principal ID로 바꿉니다. {graph-service-principal-id}를 마지막 단계에서 복사한 service-principal ID로 바꿉니다.
POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants
{
"clientId": "{service-principal-id}",
"consentType": "AllPrincipals",
"resourceId": "{graph-service-principal-id}",
"scope": "openid offline_access"
}
4. (선택 사항) 클라이언트 암호 추가
자격 증명을 사용하면 기밀 애플리케이션이 토큰을 받을 때 인증 서비스에 자신을 식별할 수 있습니다. 더 높은 수준의 보증의 경우 클라이언트 비밀 대신 인증서를 자격 증명으로 사용하는 것이 좋습니다. 클라이언트 암호를 가져오려면 다음 요청을 실행합니다. {graph-service-principal-id}를 첫 번째 단계의 appId로 바꿉니다.
POST https://graph.microsoft.com/v1.0/applications(appId='appId')/addPassword
{
"passwordCredential": {
"displayName": "My app client secret"
}
}
응답에서 secretText의 값을 복사합니다.
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.passwordCredential",
"displayName": "My app client secret",
"endDateTime": "2026-05-23T15:16:42",
"hint": "<Your hint will show up here>",
"keyId": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
"secretText": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
"startDateTime": "2024-05-23T15:16:42"
}