```
적용: 회색 X 기호가 있는 흰색 원 Workforce 사용자에 대해서는 흰색 확인 표시 기호가 있는 녹색 원이
외부 사용자(자세한알아보기)
```
이 빠른 시작에서는 ASP.NET Core 웹 API를 호출하도록 샘플 Android 모바일 애플리케이션을 구성하는 방법을 알아봅니다.
필수 구성 요소
- 네이티브 인증사용하여 샘플 Android(Kotlin) 모바일 앱에서 사용자를 로그인합니다.
-
Microsoft Entra 관리 센터에서 다음 구성을 사용하여 웹 API에 대한 새 애플리케이션을 등록합니다. 자세한 단계는 애플리케이션 등록을 참조하세요. 나중에 사용할 수 있는 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID 를 기록합니다.
- 이름: ciam-ToDoList-api.
- 지원되는 계정 유형: 이 조직 디렉터리의 계정만(단일 테넌트)
API 범위 구성
클라이언트 앱이 사용자에 대한 액세스 토큰을 성공적으로 가져오려면 API가 위임된 권한라고도 하는 하나 이상의 범위를 게시해야 합니다. 범위를 게시하려면 다음 단계를 수행합니다.
앱 등록 페이지에서 만든 API 애플리케이션(ciam-ToDoList-api)을 선택하여 개요 페이지를 엽니다.
관리에서 API 노출을 선택합니다.
페이지 위쪽의 애플리케이션 ID URI옆에 있는 추가 링크를 선택하여 이 앱에 고유한 URI를 생성합니다.
제안된 애플리케이션 ID URI (
api://{clientId}
)을 수락하고, 저장()을 선택하십시오. 웹 애플리케이션이 웹 API에 대한 액세스 토큰을 요청하면 API에 대해 정의하는 각 범위에 대한 접두사로 URI를 추가합니다.API 에 정의된범위에서, 범위 추가를 선택합니다.
API에 대한 읽기 액세스를 정의하는 다음 값을 입력한 다음, 범위 추가 선택하여 변경 내용을 저장합니다.
재산 값 범위 이름 ToDoList.읽기 동의할 수 있는 사람 관리자만 관리자 동의 표시 이름 'TodoListApi' 사용하여 사용자 ToDo 목록을 읽습니다. 관리자 동의 설명 앱이 'TodoListApi'사용하여 사용자의 ToDo 목록을 읽을 수 있도록 허용합니다. 상태 활성화됨 범위 추가을 다시 선택하고, API에 대한 읽기 및 쓰기 액세스 범위를 정의하는 다음 값을 입력하세요. 범위 추가 선택하여 변경 내용을 저장합니다.
재산 값 범위 이름 할일목록.읽기쓰기 동의할 수 있는 사람 관리자만 관리자 동의 표시 이름 'ToDoListApi' 사용하여 사용자 ToDo 목록 읽기 및 쓰기 관리자 동의 설명 앱이 'ToDoListApi' 사용하여 사용자의 ToDo 목록을 읽고 쓰도록 허용합니다. 상태 활성화됨
웹 API에 권한을 게시할 때 최소 권한 원칙을 대해 자세히 알아봅니다.
앱 역할 구성
API는 클라이언트 앱이 스스로 액세스 토큰을 얻을 수 있도록 애플리케이션 권한 , 즉애플리케이션에 대해 최소한 하나의 앱 역할을 게시해야 합니다. 애플리케이션 권한은 API가 클라이언트 애플리케이션이 자체 인증에 성공하고 사용자를 로그인할 필요가 없을 때 게시해야 하는 사용 권한의 유형입니다. 애플리케이션 권한을 게시하려면 다음 단계를 수행합니다.
앱 등록 페이지에서 만든 애플리케이션(예: ciam-ToDoList-api)을 선택하여 개요 페이지를 엽니다.
관리아래에서 앱 역할선택합니다.
앱 역할 만들기선택한 다음, 다음 값을 입력한 다음, 적용 선택하여 변경 내용을 저장합니다.
재산 값 표시 이름 ToDoList.Read.모두 허용되는 멤버 형식 애플리케이션 값 ToDoList.Read.모두 설명 앱이 'TodoListApi' 사용하여 모든 사용자의 ToDo 목록을 읽을 수 있도록 허용 이 앱 역할을 사용하도록 설정하시겠습니까? 계속 확인 앱 역할 만들기 다시 선택한 다음 두 번째 앱 역할에 대해 다음 값을 입력한 다음, 적용 선택하여 변경 내용을 저장합니다.
재산 값 표시 이름 ToDoList.ReadWrite.모두 허용되는 멤버 형식 애플리케이션 값 ToDoList.ReadWrite.모두 설명 앱이 'ToDoListApi' 사용하여 모든 사용자의 ToDo 목록을 읽고 쓰도록 허용합니다. 이 앱 역할을 사용하도록 설정하시겠습니까? 계속 확인
선택적 클레임 구성
idtyp 선택적 클레임을 추가하여 웹 API에서 토큰이 앱 토큰인지 아니면 앱 + 사용자 토큰인지 확인할 수 있습니다. scp 및 역할의 조합을 동일한 용도로 클레임을 사용할 수 있지만 idtyp 클레임을 사용하는 것이 앱 토큰과 앱 + 사용자 토큰을 구분하는 가장 쉬운 방법입니다. 예를 들어, 토큰이 앱 전용 토큰인 경우 이 클레임의 값은 앱입니다.
Android 샘플 앱에 API 권한 부여
클라이언트 앱과 웹 API를 모두 등록하고 범위를 만들어 API를 노출한 후에는 다음 단계에 따라 API에 대한 클라이언트의 권한을 구성할 수 있습니다.
앱 등록 페이지에서 만든 애플리케이션(예: ciam-client-app)을 선택하여 개요 페이지를 엽니다.
관리를선택한 후, API 권한을에서 선택합니다.
구성된 권한아래에서 사용 권한 추가을 선택합니다.
조직에서 사용하는 API의 탭을 선택합니다.
API 목록에서 ciam-ToDoList-api같은 API를 선택합니다.
위임된 권한 옵션을 선택합니다.
사용 권한 목록에서 ToDoList.Read, ToDoList.ReadWrite 선택합니다(필요한 경우 검색 상자 사용).
권한 추가 단추를 선택합니다.
이 시점에서 사용 권한을 올바르게 할당했습니다. 그러나 테넌트는 고객의 테넌트이므로 소비자 사용자 자체는 이러한 권한에 동의할 수 없습니다. 이 문제를 해결하려면 관리자가 테넌트에 있는 모든 사용자를 대신하여 이러한 권한에 동의해야 합니다.
테넌트 이름 <>에 대해 관리자 동의를 부여을 선택한 다음, 예를 선택합니다.
새로 고침을 선택한 다음, 두 권한의 < 아래에 >테넌트 이름에 대해 부여됨이 표시되는지 확인합니다.
구성된 사용 권한 목록에서 ToDoList.Read 와 ToDoList.ReadWrite 권한을 하나씩 선택한 후, 나중에 사용할 수 있도록 사용 권한의 전체 URI를 복사합니다. 전체 권한 URI는
api://{clientId}/{ToDoList.Read}
또는api://{clientId}/{ToDoList.ReadWrite}
비슷합니다.
샘플 Web API 복제 또는 다운로드
샘플 애플리케이션을 가져오려면 GitHub에서 복제하거나 .zip 파일로 다운로드할 수 있습니다.
샘플을 복제하려면 명령 프롬프트를 열고 프로젝트를 만들 위치로 이동하고 다음 명령을 입력합니다.
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
.zip 파일을 다운로드합니다. 이름 길이가 260자 미만인 파일 경로로 추출합니다.
샘플 Web API 구성 및 실행
코드 편집기에서
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
파일을 엽니다.자리 표시자를 찾습니다.
-
Enter_the_Application_Id_Here
을 이전에 복사한 웹 API의 애플리케이션(클라이언트) ID로 교체합니다. -
Enter_the_Tenant_Id_Here
이전에 복사한 디렉터리(테넌트) ID로 바꿉니다. -
Enter_the_Tenant_Subdomain_Here
디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어 테넌트 주 도메인이contoso.onmicrosoft.com
경우contoso
사용합니다. 테넌트 이름이 없는 경우 테넌트 세부 정보를 읽는 방법을알아봅니다.
-
Android 샘플 앱에 대한 웹 API를 호스트하여 호출해야 합니다. 간편 시작: ASP.NET 웹앱을 따라 웹 API를 배포하세요.
Web API를 호출하도록 샘플 Android 모바일 앱 구성
이 샘플을 사용하면 여러 Web API URL 엔드포인트 및 범위 집합을 구성할 수 있습니다. 이 경우 하나의 Web API URL 엔드포인트와 연결된 범위만 구성합니다.
Android Studio에서
/app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt
파일을 엽니다.WEB_API_URL_1
명명된 속성을 찾고 URL을 웹 API로 설정합니다.private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
scopesForAPI1
으로 명명된 속성을 찾아서, 에 기록된 범위를 Android 샘플 앱에 대한 API 권한을 허용하도록 설정합니다.private val scopesForAPI1 = listOf<String>() // Developers should set the respective scopes of their web API here. For example, private val scopes = listOf<String>("api://{clientId}/{ToDoList.Read}", "api://{clientId}/{ToDoList.ReadWrite}")
Android 샘플 앱 실행 및 웹 API 호출
앱을 빌드하고 실행하려면 다음 단계를 수행합니다.
도구 모음의 실행 구성 메뉴에서 앱을 선택합니다.
대상 디바이스 메뉴에서 앱을 실행할 디바이스를 선택합니다.
구성된 디바이스가 없는 경우 Android 에뮬레이터를 사용하거나 실제 디바이스를 연결하기 위해 Android 가상 디바이스를 만들어야 합니다.
실행 단추를 선택합니다. 앱이 전자 메일 및 일회용 암호 화면에서 열립니다.
API 탭을 선택하여 API 호출을 테스트합니다. 웹 API를 성공적으로 호출하면 HTTP
200
반환되고 HTTP403
권한 없는 액세스를 의미합니다.