SSO(Single Sign-On)를 사용하면 사용자가 자격 증명을 한 번만 입력하고 해당 자격 증명이 애플리케이션에서 자동으로 작동하도록 할 수 있습니다. 사용자가 관리해야 하는 암호 수를 줄이고 암호 피로 및 관련 취약성의 위험을 줄여 사용자 환경을 향상시키고 보안을 향상시킵니다.
Microsoft ID 플랫폼 및 MSAL(Microsoft 인증 라이브러리)을 사용하면 애플리케이션 제품군에서 SSO를 사용하도록 설정할 수 있습니다. Broker 기능을 사용하도록 설정하면 전체 디바이스에서 SSO를 확장할 수 있습니다.
이 방법에서는 고객에게 SSO를 제공하도록 애플리케이션에서 사용하는 SDK(소프트웨어 개발 키트)를 구성하는 방법을 알아봅니다.
사전 요구 사항
이 방법에서는 다음 방법을 알고 있다고 가정합니다.
- 앱을 프로비저닝하세요. 자세한 내용은 Android 자습서에서 앱을 만들기 위한 지침을 참조하세요.
- Android용 MSAL과 애플리케이션 통합
SSO에 대한 메서드
애플리케이션에서 Android용 MSAL을 사용하여 SSO를 달성하는 방법에는 두 가지가 있습니다.
브로커 애플리케이션을 통해
시스템 브라우저를 통해
디바이스 전체 SSO, 계정 관리 및 조건부 액세스와 같은 이점을 위해 broker 애플리케이션을 사용하는 것이 좋습니다. 그러나 사용자가 추가 애플리케이션을 다운로드해야 합니다.
조정된 인증을 통한 SSO
Microsoft 인증 브로커 중 하나를 사용하여 디바이스 전체 SSO에 참여하고 조직의 조건부 액세스 정책을 충족하는 것이 좋습니다. broker와 통합하면 다음과 같은 이점이 제공됩니다.
- 디바이스 SSO
- 조건부 액세스:
- Intune 앱 보호
- 디바이스 등록(작업 공간 연결)
- 모바일 디바이스 관리
- 디바이스 전체 계정 관리
- Android AccountManager 및 계정 설정을 통해
- "회사 계정" - 사용자 지정 계정 유형
Android에서 Microsoft 인증 브로커는 Microsoft Authenticator, Intune 회사 포털 및 Windows 앱 링크에 포함된 구성 요소입니다.
다음 다이어그램에서는 앱, MSAL 및 Microsoft 인증 브로커 간의 관계를 보여 줍니다.
브로커를 호스트하는 앱 설치
브로커 호스팅 앱은 언제든지 디바이스 소유자가 앱 스토어(일반적으로 Google Play 스토어)에서 설치할 수 있습니다. 그러나 일부 API(리소스)는 다음과 같은 디바이스가 필요한 조건부 액세스 정책으로 보호됩니다.
- 등록됨(작업공간 가입) 및/또는
- 장치 관리에 등록되었거나
- Intune 앱 보호에 등록됨
위에서 언급한 요구 사항이 있는 디바이스에 브로커 앱이 아직 설치되어 있지 않은 경우 MSAL은 앱이 대화형으로 토큰을 가져오려고 시도하는 즉시 설치하도록 사용자에게 지시합니다. 그러면 앱은 디바이스가 필요한 정책을 준수하도록 하는 단계를 통해 사용자를 안내합니다. 정책 요구 사항이 없거나 사용자가 Microsoft 계정 사용하여 로그인하는 경우 Broker 앱 설치가 필요하지 않습니다.
브로커 설치 및 제거의 영향
Broker가 설치된 경우
브로커가 디바이스에 설치되면 모든 후속 대화형 토큰 요청(호출 acquireToken())은 MSAL에서 로컬이 아닌 broker에 의해 처리됩니다. 이전에 MSAL에서 사용할 수 있었던 모든 SSO 상태는 broker에서 사용할 수 없습니다. 따라서 사용자는 다시 인증하거나 디바이스에 알려진 기존 계정 목록에서 계정을 선택해야 합니다.
broker를 설치해도 사용자가 다시 로그인할 필요가 없습니다. 사용자가 MsalUiRequiredException을 해결해야 하는 경우에만 다음 요청이 브로커로 전송됩니다.
MsalUiRequiredException는 여러 가지 이유로 발생할 수 있으며 대화식으로 해결해야 합니다. 다음은 그 예입니다.
- 사용자가 계정과 연결된 암호를 변경했습니다.
- 사용자의 계정이 더 이상 조건부 액세스 정책을 충족하지 않습니다.
- 사용자가 앱이 자신의 계정과 연결될 수 있도록 동의를 취소했습니다.
여러 브로커 - 여러 브로커가 디바이스에 설치된 경우 MSAL은 인증 프로세스를 완료하기 위해 활성 브로커를 자체적으로 식별합니다.
broker를 제거한 경우
브로커 호스팅 앱이 하나만 설치되어 있고 제거된 경우 사용자는 다시 로그인해야 합니다. 활성 브로커를 제거하면 디바이스에서 계정 및 연결된 토큰이 제거됩니다.
Microsoft Authenticator, Intune 회사 포털 또는 Windows 연결이 제거되면 사용자에게 다시 로그인하라는 메시지가 표시될 수 있습니다.
브로커와의 통합
broker에 대한 리디렉션 URI 생성
broker와 호환되는 리디렉션 URI를 등록해야 합니다. 브로커의 리디렉션 URI에는 앱의 패키지 이름과 앱 서명의 Base64로 인코딩된 표현이 포함되어야 합니다.
리디렉션 URI의 형식은 다음과 같습니다. msauth://<yourpackagename>/<base64urlencodedsignature>
keytool을 사용하여 앱의 서명 키를 사용하여 Base64로 인코딩된 서명 해시를 생성한 다음 해당 해시를 사용하여 리디렉션 URI를 생성할 수 있습니다.
Linux 및 macOS:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
윈도우:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
keytool을 사용하여 서명 해시를 생성한 후에는 Azure 포털을 사용하여 리디렉션 URI를 생성합니다.
- 적어도 클라우드 애플리케이션 관리자로서 Microsoft Entra 관리 센터에 로그인하세요.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘
을 사용하여 디렉터리 + 구독 메뉴에서 앱 등록이 포함된 테넌트로 전환합니다. - Entra ID>앱 등록으로 이동합니다.
- 애플리케이션을 선택한 다음인증 플랫폼 >Android>선택합니다.
- 열리는 Android 앱 구성 창에서 이전에 생성한 서명 해시 와 패키지 이름을 입력합니다.
- 구성 단추를 클릭합니다.
리디렉션 URI가 자동으로 생성되고 Android 구성 창의 리디렉션 URI 필드에 표시됩니다.
앱 서명에 대한 자세한 내용은 Android Studio 사용자 가이드에서 앱 서명을 참조하세요 .
BROKER를 사용하도록 MSAL 구성
앱에서 broker를 사용하려면 브로커 리디렉션을 구성했음을 확인해야 합니다. 예를 들어, MSAL 구성 파일에 다음 설정을 포함하여 브로커 사용이 설정된 리디렉션 URI와 해당 URI를 등록했음을 나타내는 정보 둘 다 포함합니다.
"redirect_uri" : "<yourbrokerredirecturi>",
"broker_redirect_uri_registered": true
Broker 관련 예외
MSAL은 다음 두 가지 방법으로 브로커와 통신합니다.
- 브로커 바인드 서비스
- Android AccountManager
MSAL은 이 서비스를 호출할 때 Android 권한이 필요하지 않으므로 먼저 broker 바인딩된 서비스를 사용합니다. 바인딩된 서비스에 대한 바인딩이 실패하면 MSAL은 Android AccountManager API를 사용합니다. MSAL은 앱에 이미 사용 권한이 부여된 경우에만 이 작업을 수행합니다 "READ_CONTACTS" .
오류 코드 "BROKER_BIND_FAILURE"가 표시된 MsalClientException가 나타나면 다음 두 가지 옵션이 있습니다.
- 사용자에게 Microsoft Authenticator 앱 및 Intune 회사 포털 대한 전원 최적화를 사용하지 않도록 설정하도록 요청합니다.
- 사용자에게 사용 권한 부여 요청
"READ_CONTACTS"
브로커 통합 검증
broker 통합이 작동하는지 즉시 명확하지 않을 수도 있지만 다음 단계를 사용하여 확인할 수 있습니다.
- Android 디바이스에서 broker를 사용하여 요청을 완료합니다.
- Android 디바이스의 설정에서 인증한 계정에 해당하는 새로 만든 계정을 찾습니다. 계정은 Work 계정 유형이어야 합니다.
테스트를 반복하려는 경우 설정에서 계정을 제거할 수 있습니다.
시스템 브라우저를 통한 SSO
Android 애플리케이션에는 인증 사용자 환경을 위해 시스템 브라우저 또는 Chrome 사용자 지정 탭을 사용할 WEBVIEW수 있는 옵션이 있습니다. 애플리케이션이 조정된 인증을 사용하지 않는 경우 SSO를 달성하려면 네이티브 웹 보기 대신 시스템 브라우저를 사용해야 합니다.
권한 부여 에이전트
권한 부여 에이전트에 대한 특정 전략을 선택하는 것이 중요하며 앱이 사용자 지정할 수 있는 추가 기능을 나타냅니다. 'WEBVIEW'를 사용하는 것이 좋습니다. 다른 구성 값에 대해 자세히 알아보려면( Android MSAL 구성 파일 이해 참조)
MSAL은 WEBVIEW 또는 시스템 브라우저를 사용한 권한 부여를 지원합니다. 아래 이미지는 WEBVIEW 또는 CustomTabs를 사용하거나 사용하지 않는 시스템 브라우저를 사용할 때 어떻게 표시되는지 보여 줍니다.
SSO의 영향
애플리케이션이 앱에 브로커 인증을 통합하지 않은 상태에서 WEBVIEW 전략을 사용하는 경우, 사용자는 기기 전반에서 또는 네이티브 앱과 웹 앱 간에 SSO 경험을 누릴 수 없습니다.
애플리케이션을 MSAL과 통합하여 BROWSER 권한을 부여할 수 있습니다. WEBVIEW와 달리, BROWSER는 기본 시스템 브라우저와 쿠키 저장소를 공유하므로 Custom Tabs를 통합한 웹 또는 기타 네이티브 앱에서 로그인 횟수를 줄일 수 있습니다.
애플리케이션이 Microsoft Authenticator, Intune 회사 포털 또는 Windows 링크와 같은 브로커와 함께 MSAL을 사용하는 경우 사용자는 앱 중 하나로 활성 로그인이 있는 경우 애플리케이션 간에 SSO 환경을 가질 수 있습니다.
메모
broker를 사용하는 MSAL은 WebView를 활용하고 MSAL 라이브러리를 사용하고 조정된 인증에 참여하는 모든 애플리케이션에 대해 SSO를 제공합니다. broker의 SSO 상태는 MSAL을 사용하지 않는 다른 앱으로 확장되지 않습니다.
웹뷰
앱 내 WebView를 사용하려면 MSAL에 전달되는 앱 구성 JSON에 다음 줄을 배치합니다.
"authorization_user_agent" : "WEBVIEW"
앱 내를 사용하는 경우 사용자는 앱 WEBVIEW에 직접 로그인합니다. 토큰은 앱의 샌드박스 내에 보관되며 앱의 쿠키 jar 외부에서는 사용할 수 없습니다. 따라서 앱이 Microsoft Authenticator 앱, Intune 회사 포털 또는 Windows 링크와 통합되지 않는 한 사용자는 애플리케이션 간에 SSO 환경을 가질 수 없습니다.
그러나 WEBVIEW 로그인 UI의 모양과 느낌을 사용자 지정하는 기능을 제공합니다. 이 사용자 지정을 수행하는 방법에 대한 자세한 내용은 Android WebViews 를 참조하세요.
Browser
브라우저 및 사용자 지정 탭 전략을 사용하는 옵션을 제공하지만 WEBVIEW를 사용하는 것이 좋습니다. 사용자 지정 구성 파일에서 다음 JSON 구성을 사용하여 이 전략을 명시적으로 나타낼 수 있습니다.
"authorization_user_agent" : "BROWSER"
이 방법을 사용하여 디바이스의 브라우저를 통해 SSO 환경을 제공합니다. MSAL은 MSAL에서 설정한 지속형 세션 쿠키를 사용하여 다른 네이티브 앱 또는 웹앱이 디바이스에서 SSO를 달성할 수 있도록 하는 공유 쿠키 jar을 사용합니다.
브라우저 선택 추론
MSAL이 다양한 Android 휴대폰 배열에서 사용할 정확한 브라우저 패키지를 지정하는 것은 불가능하기 때문에 MSAL은 최상의 디바이스 간 SSO를 제공하려는 브라우저 선택 추론을 구현합니다.
MSAL은 주로 패키지 관리자에서 기본 브라우저를 검색하고 안전한 브라우저의 테스트 목록에 있는지 확인합니다. 그렇지 않은 경우 MSAL은 안전 목록에서 기본이 아닌 다른 브라우저를 시작하는 대신 Webview를 다시 사용합니다. 기본 브라우저는 사용자 지정 탭을 지원하는지 여부에 관계없이 선택됩니다. 브라우저에서 사용자 지정 탭을 지원하는 경우 MSAL은 사용자 지정 탭을 시작합니다. 사용자 지정 탭은 앱 WebView 내 탭에 더 가깝게 표시되고 기본 UI 사용자 지정을 허용합니다. 자세한 내용은 Android의 사용자 지정 탭 을 참조하세요.
디바이스에 브라우저 패키지가 없는 경우 MSAL은 앱 WebView내 패키지를 사용합니다. 디바이스 기본 설정이 변경되지 않으면 SSO 환경을 보장하기 위해 각 로그인에 대해 동일한 브라우저를 시작해야 합니다.
테스트된 브라우저
다음 브라우저는 구성 파일에 지정된 "redirect_uri"로 올바르게 리디렉션되는지 확인하기 위해 테스트되었습니다.
| 디바이스 | 기본 제공 브라우저 | 크롬 | 오페라 | 마이크로소프트 엣지 | UC 브라우저 | 파이어 폭스 |
|---|---|---|---|---|---|---|
| Nexus 4(API 17) | 통과 | 통과 | 적용할 수 없음 | 적용할 수 없음 | 적용할 수 없음 | 적용할 수 없음 |
| Samsung S7(API 25) | 패스1 | 통과 | 통과 | 통과 | 실패 | 통과 |
| Vivo(API 26) | 통과 | 통과 | 통과 | 통과 | 통과 | 실패 |
| 픽셀 2(API 26) | 통과 | 통과 | 통과 | 통과 | 실패 | 통과 |
| Oppo | 통과 | 해당 없음2 | 적용할 수 없음 | 적용할 수 없음 | 적용할 수 없음 | 적용할 수 없음 |
| OnePlus(API 25) | 통과 | 통과 | 통과 | 통과 | 실패 | 통과 |
| Nexus(API 28) | 통과 | 통과 | 통과 | 통과 | 실패 | 통과 |
| MI | 통과 | 통과 | 통과 | 통과 | 실패 | 통과 |
1삼성 전자의 기본 제공 브라우저는 삼성 인터넷입니다.
2개기본 브라우저는 Oppo 디바이스 설정 내에서 변경할 수 없습니다.
다음 단계
Android 디바이스에 대한 공유 디바이스 모드 를 사용하면 여러 직원이 쉽게 공유할 수 있도록 Android 디바이스를 구성할 수 있습니다.
브로커 애플리케이션에 대한 자세한 내용은 다음을 참조하세요.