Apple 디바이스에서 Microsoft Enterprise SSO 확장 플러그 인 문제 해결
이 문서에서는 관리자가 Enterprise SSO 플러그 인을 배포하고 사용할 때 발생하는 문제를 해결하는 데 사용하는 문제 해결 지침을 제공합니다. Apple SSO 확장을 iOS/iPadOS 및 macOS에 배포할 수 있습니다.
조직은 최종 사용자에게 더 나은 환경을 제공하기 위해 회사 디바이스에 SSO를 배포하도록 선택할 수 있습니다. Apple 플랫폼에서 이 프로세스 중에는 기본 새로 고침 토큰을 통해 SSO(Single Sign On)가 구현됩니다. SSO는 최종 사용자에게 과도한 인증 확인 메시지가 표시되지 않도록 합니다.
Microsoft는 Microsoft Entra ID와 통합된 애플리케이션에 대한 조정된 인증을 제공하는 Apple의 SSO 프레임워크를 기반으로 빌드된 플러그 인을 구현했습니다. 자세한 내용은 Apple 디바이스용 Microsoft Enterprise SSO 플러그 인 문서를 참조하세요.
확장 유형
Apple은 프레임워크의 일부인 리디렉션 및 자격 증명이라는 두 가지 유형의 SSO 확장을 지원합니다. Microsoft Enterprise SSO 플러그 인은 Redirect 형식으로 구현되었으며 Microsoft Entra ID에 대한 인증을 중개하는 데 가장 적합합니다. 다음 표에서는 두 가지 유형의 확장을 비교합니다.
확장 형식 | 가장 적합한 용도 | 작동 원리 | 주요 차이점 |
---|---|---|---|
리디렉션 | OpenID Connect, OAUTH2 및 SAML(Microsoft Entra ID)과 같은 최신 인증 방법 | 운영 체제는 애플리케이션에서 확장 MDM 구성 프로필에 정의된 ID 공급자 URL로의 인증 요청을 가로챌 수 있습니다. 리디렉션 확장은 URL, 헤더 및 본문을 받습니다. | 데이터를 요청하기 전에 자격 증명을 요청합니다. MDM 구성 프로필에서 URL을 사용합니다. |
자격 증명 | Kerberos(온-프레미스 Active Directory Domain Services)와 같은 챌린지 및 응답 인증 유형 | 요청은 애플리케이션에서 인증 서버(AD 도메인 컨트롤러)로 전송됩니다. 자격 증명 확장은 MDM 구성 프로필에서 HOST로 구성됩니다. 인증 서버가 프로필에 나열된 호스트와 일치하는 챌린지를 반환하는 경우 운영 체제는 챌린지를 확장으로 라우팅합니다. 확장은 챌린지를 처리하거나 거부할 수 있습니다. 처리된 경우 확장은 요청을 완료하기 위해 권한 부여 헤더를 반환하고 인증 서버는 호출자에게 응답을 반환합니다. | 그런 다음, 요청 데이터가 인증에 대해 챌린지됩니다. MDM 구성 프로필에서 HOST를 사용합니다. |
Microsoft는 다음 클라이언트 운영 체제에 대한 조정된 인증을 구현합니다.
OS | 인증 브로커 |
---|---|
Windows | WAM(웹 계정 관리자) |
iOS/iPadOS | Microsoft Authenticator |
Android | Microsoft Authenticator 또는 Microsoft Intune 회사 포털 |
macOS | Microsoft Intune 회사 포털(SSO 확장을 통해) |
모든 Microsoft 브로커 애플리케이션은 PRT(기본 새로 고침 토큰)라는 키 아티팩트를 사용합니다. 이 아티팩트는 Microsoft Entra ID로 보호되는 애플리케이션 및 웹 리소스에 대한 액세스 토큰을 획득하는 데 사용되는 JWT(JSON Web Token)입니다. MDM을 통해 배포되는 경우 macOS 또는 iOS용 Enterprise SSO 확장은 WAM(웹 계정 관리자)이 Windows 디바이스에서 사용하는 PRT와 유사한 PRT를 가져옵니다. 자세한 내용은 기본 새로 고침 토큰이란? 문서를 참조하세요.
문제 해결 모델
다음 순서도에서는 SSO 확장 문제 해결에 접근하기 위한 논리적 흐름을 간략하게 설명합니다. 이 문서의 나머지 부분에서는 이 순서도에 설명된 단계를 자세히 설명합니다. 문제 해결은 배포 및 애플리케이션 인증 흐름이라는 두 개의 개별 포커스 영역으로 나눌 수 있습니다.
macOS에서 플랫폼 SSO를 옵트아웃하는 단계
실수로 사용하도록 설정된 PSSO를 옵트아웃하려면 관리자는 디바이스에서 PSSO가 사용하도록 설정된 SSO 확장 프로필을 제거하고 PSSO 플래그가 비활성화/제거된 새 SSO 확장 프로필을 배포해야 합니다.
- PSSO를 사용하도록 설정된 SSO 프로필에 대한 대상 제거
- 디바이스 동기화를 시작하여 디바이스에서 PSSO를 사용하도록 설정된 SSO 프로필을 가져옵니다.
- PSSO를 사용하지 않도록 설정된 새 SSO 프로필로 디바이스 대상 지정
- 디바이스 동기화를 시작하여 디바이스에 새 프로필을 설치합니다.
Important
참고: PSSO 등록이 완료된 후 디바이스에서 기존 SSO 프로필을 업데이트하면 PSSO를 사용하지 않도록 설정하는 데 도움이 되지 않습니다. 디바이스에서 SSO 프로필을 완전히 제거하면 디바이스에서 PSSO 상태가 제거됩니다.
컨텍스트:
사용자는 다음 두 가지 시나리오에서 macOS 13 이상 디바이스에서 PSSO 등록 알림을 보기 시작할 것입니다.
- 디바이스에 이미 PSSO를 지원하는 Intune 회사 포털 버전이 있고 관리자가 PSSO가 활성화된 새 SSO 확장 정책을 배포하는 경우
- 사용자가 이미 PSSO가 활성화된 SSO 확장 정책의 대상이 되고 나중에 PSSO를 지원하는 Intune 회사 포털 버전이 디바이스에 설치된 경우.
주의
관리자는 테스트하고 배포할 준비가 되지 않은 한 PSSO가 설정된 SSO 확장 정책으로 사용자를 대상으로 지정해서는 안 됩니다. 이로 인해 기존 사용자와 해당 규정 준수 조건이 손상될 수 있습니다.
Important
참고: PSSO 등록을 완료한 사용자의 경우 레거시 WPJ 등록이 키 집합에서 제거됩니다. PSSO 등록이 실수로 수행된 경우 관리자가 PSSO를 사용하여 SSO 프로필을 제거하고 PSSO 없이 새 프로필을 설치하면 디바이스 준수가 작동하게 하기 위해 레거시 WPJ 등록을 다시 수행해야 합니다.
배포 문제 해결
고객에게 발생하는 대부분의 문제는 SSO 확장 프로필의 부적절한 MDM(모바일 디바이스 관리) 구성으로 인하거나 Apple 디바이스가 MDM에서 구성 프로필을 받을 수 없기 때문에 발생합니다. 이 섹션에서는 MDM 프로필이 Mac에 배포되었고 올바른 구성이 있는지 확인하기 위해 수행할 수 있는 단계를 설명합니다.
배포 요구 사항
- macOS 운영 체제: 버전 10.15(Catalina) 이상
- iOS 운영 체제: 버전 13 이상
- 디바이스는 Apple macOS 및/또는 iOS(MDM 등록)를 지원하는 모든 MDM 공급업체에서 관리됩니다.
- 인증 브로커 소프트웨어 Microsoft Intune 회사 포털 또는 iOS용 Microsoft Authenticator가 설치되어 있습니다.
macOS 운영 체제 버전 확인
다음 단계를 사용하여 macOS 디바이스의 OS(운영 체제) 버전을 확인합니다. Apple SSO 확장 프로필은 macOS 10.15(Catalina) 이상을 실행하는 디바이스에만 배포됩니다. 사용자 인터페이스 또는 터미널에서 macOS 버전을 확인할 수 있습니다.
사용자 인터페이스
macOS 디바이스에서 왼쪽 상단에 있는 Apple 아이콘을 선택하고 이 Mac 정보를 선택합니다.
운영 체제 버전은 macOS 옆에 나열되어 있습니다.
터미널
macOS 디바이스에서 Applications 폴더를 두 번 클릭한 다음 Utilities 폴더를 두 번 클릭합니다.
터미널 애플리케이션을 두 번 클릭합니다.
터미널이 프롬프트에서 sw_vers 형식으로 열리면 다음과 같은 결과를 확인합니다.
% sw_vers ProductName: macOS ProductVersion: 13.0.1 BuildVersion: 22A400
iOS 운영 체제 버전 확인
다음 단계에서 iOS 디바이스의 OS(운영 체제) 버전을 확인합니다. Apple SSO 확장 프로필은 iOS 13 이상을 실행하는 디바이스에만 배포됩니다. 설정 앱에서 iOS 버전을 확인할 수 있습니다. 설정 앱을 엽니다.
일반으로 이동한 다음 정보로 이동합니다. 이 화면에는 iOS 버전 번호를 포함하여 디바이스에 대한 정보가 나열됩니다.
SSO 확장 구성 프로필의 MDM 배포
MDM 관리자(또는 디바이스 관리 팀)와 협력하여 확장 구성 프로필이 Apple 디바이스에 배포되었는지 확인합니다. 확장 프로필은 macOS 또는 iOS 디바이스를 지원하는 모든 MDM에서 배포할 수 있습니다.
Important
Apple은 SSO 확장을 배포하기 위해 디바이스를 MDM에 등록해야 합니다.
다음 표에서는 확장을 배포하는 OS에 따라 특정 MDM 설치 지침을 제공합니다.
Important
모든 MDM은 SSO 확장을 배포하는 데 지원되지만 많은 조직에서 MDM 준수 정책을 평가하여 디바이스 기반 조건부 액세스 정책을 구현합니다. 타사 MDM을 사용하는 경우 디바이스 기반 조건부 액세스 정책을 사용하려는 경우 MDM 공급업체가 Intune 파트너 규정 준수를 지원하는지 확인합니다. SSO 확장이 Intune 또는 Intune 파트너 규정 준수를 지원하는 MDM 공급자를 통해 배포되면 확장은 디바이스 인증이 완료될 수 있도록 디바이스 인증서를 Microsoft Entra ID에 전달할 수 있습니다.
macOS 디바이스에서 네트워킹 구성 유효성 검사
Apple의 SSO 확장 프레임워크와 이를 기반으로 빌드된 Microsoft Enterprise SSO 확장에서는 특정 도메인이 TLS 차단/검사(프록시 중단 및 검사라고도 함)에서 제외되도록 요구합니다. 다음 도메인은 TLS 검사를 받지 않아야 합니다.
- app-site-association.cdn-apple.com
- app-site-association.networking.apple
TLS 검사로 인해 SSO 구성이 손상되었는지 확인
영향을 받는 디바이스의 터미널 애플리케이션에서 sysdiagnose를 실행하여 TLS 검사가 SSO 구성에 영향을 미치는지 유효성을 검사할 수 있습니다.
sudo sysdiagnose -f ~/Desktop/
sysdiagnose는 데스크톱에 .tar.gz 보관으로 저장됩니다. 보관을 추출하고 system_logs.logarchive 파일을 엽니다. 콘솔 애플리케이션에서 열립니다. com.apple.appsso를 검색하고 필터를 SUBSYSTEM으로 변경합니다.
특히 login.microsoftonline.com과 같은 Microsoft 도메인과 관련된 연결된 도메인 오류가 있음을 나타내는 이벤트를 찾습니다. 이러한 이벤트는 TLS 검사 문제를 나타낼 수 있으며 이로 인해 SSO 확장이 제대로 작동하지 않을 수 있습니다. Apple 도메인은 지원되지 않는 TLS 검사 구성의 영향을 받는 경우에도 sysdiagnose 로그에 표시되지 않습니다.
TLS 검사 구성 유효성 검사
Apple은 Mac 평가 유틸리티라는 여러 가지 일반적인 구성 문제를 확인하기 위한 macOS 도구를 제공합니다. 이 도구는 IT용 AppleSeed에서 다운로드할 수 있습니다. IT용 AppleSeed에 대한 액세스 권한이 있는 경우 리소스 영역에서 Mac 평가 유틸리티를 다운로드합니다. 애플리케이션을 설치한 후 평가판을 실행합니다. 평가가 완료되면 HTTPS 차단 -->추가 콘텐츠 -->로 이동하여 아래 두 항목을 확인합니다.
이러한 검사에 경고 또는 오류가 있는 경우 디바이스에서 TLS 검사가 발생할 수 있습니다. 네트워크 팀과 협력하여 *.cdn-apple.com 및 *.networking.apple을 TLS 검사에서 제외합니다.
자세한 swcd 로그 출력
Apple은 연결된 도메인 유효성 검사의 진행률을 모니터링할 수 있는 swcutil
이라는 명령줄 유틸리티를 제공합니다. 다음 명령을 사용하여 연결된 도메인 오류를 모니터링할 수 있습니다.
sudo swcutil watch --verbose
로그에서 다음 항목을 찾아 승인된 것으로 표시되었는지 또는 오류가 있는지 확인합니다.
```
Entry s = authsrv, a = UBF8T346G9.com.microsoft.CompanyPortalMac, d = login.microsoftonline.com
```
macOS TLS 검사 캐시 지우기
연결된 도메인에 문제가 있고 온-디바이스 TLS 검사 도구에 허용 목록 도메인이 있는 경우 Apple의 연결된 도메인 유효성 검사 캐시가 무효화되는 데 다소 시간이 걸릴 수 있습니다. 아쉽게도 모든 컴퓨터에서 연결된 도메인 다시 유효성 검사를 다시 트리거하는 결정적 단계는 없지만 시도할 수 있는 몇 가지 작업이 있습니다.
다음 명령을 실행하여 디바이스의 캐시를 다시 설정할 수 있습니다.
pkill -9 swcd
sudo swcutil reset
pkill -9 AppSSOAgent
캐시를 다시 설정한 후 SSO 확장 구성을 다시 테스트합니다.
경우에 따라 이 명령이 부족하여 캐시를 완전히 다시 설정하지 않을 수 있습니다. 이러한 경우 다음을 시도할 수 있습니다.
- Intune 회사 포털 앱을 제거하거나 휴지통으로 이동한 다음 디바이스를 다시 시작합니다. 다시 시작이 완료되면 회사 포털 앱을 다시 설치할 수 있습니다.
- 디바이스를 다시 등록합니다.
위의 방법 중 어느 것도 문제를 해결하지 못하면 사용자 환경에 연결된 도메인 유효성 검사를 차단할 수 있는 다른 항목이 있을 수 있습니다. 이 경우 추가 문제 해결을 위해 Apple 지원에 문의하세요.
macOS 디바이스에서 SSO 구성 프로필 유효성 검사
MDM 관리자가 이전 섹션 SSO 확장 프로필의 MDM 배포의 단계를 수행했다고 가정하면 다음 단계는 프로필이 디바이스에 성공적으로 배포되었는지 확인하는 것입니다.
SSO 확장 MDM 구성 프로필 찾기
macOS 디바이스에서 시스템 설정을 선택합니다.
시스템 설정이 나타나면 프로필을 입력하고 Enter 키을 누릅니다.
이 작업을 수행하면 프로필 패널이 표시됩니다.
스크린샷 설명선 설명 1 디바이스가 MDM 관리 하에 있음을 나타냅니다. 2 선택할 수 있는 프로필이 여러 개 있을 수 있습니다. 이 예제에서 Microsoft Enterprise SSO 확장 프로필을 Extensible Single Sign On Profile-32f37be3-302e-4549-a3e3-854d300e117a라고 합니다. 참고 항목
사용 중인 MDM 유형에 따라 여러 프로필이 나열될 수 있으며 MDM 구성에 따라 명명 체계는 임의로 지정됩니다. 각 유형을 선택하고 설정 행에 Single Sign On 확장이 표시되는지 검사합니다.
Single Sign On 확장의 설정 값과 일치하는 구성 프로필을 두 번 클릭합니다.
스크린샷 설명선 구성 프로필 설정 설명 1 Signed MDM 공급자의 서명 기관. 2 설치됨 확장이 설치되었거나 업데이트된 시기를 보여 주는 날짜/타임스탬프 3 설정: Single Sign On 확장 이 구성 프로필이 Apple SSO 확장 유형임을 나타냅니다. 4 내선 번호 Microsoft Enterprise Extension 플러그 인을 실행하는 애플리케이션의 번들 ID에 매핑되는 식별자. 프로필이 macOS 디바이스에 설치된 경우 식별자는 항상 com.microsoft.CompanyPortalMac.ssoextension
으로 설정되어야 하며 팀 식별자는 (UBF8T346G9)로 표시되어야 합니다. 값이 다르면 MDM이 확장을 올바르게 호출하지 않는 것입니다.5 Type Microsoft Enterprise SSO 확장은 항상 리디렉션 확장 유형으로 설정되어야 합니다. 자세한 내용은 리디렉션 및 자격 증명 확장 유형을 참조하세요. 6 URL ID 공급자(Microsoft Entra ID)에 속하는 로그인 URL입니다. 지원되는 URL 목록을 참조하세요. 모든 Apple SSO 리디렉션 확장에는 구성 프로필에 다음과 같은 MDM 페이로드 구성 요소가 있어야 합니다.
MDM 페이로드 구성 요소 설명 확장 식별자 확장을 실행하는 macOS 디바이스에서 애플리케이션의 번들 식별자와 팀 식별자를 모두 포함합니다. 참고: Microsoft Enterprise SSO 확장을 항상 com.microsoft.CompanyPortalMac.ssoextension(UBF8T346G9)으로 설정하여 확장 클라이언트 코드가 Intune 회사 포털 애플리케이션의 일부임을 macOS 운영 체제에 알려야 합니다. Type 리디렉션 확장 유형을 나타내려면 리디렉션으로 설정해야 합니다. URL 운영 체제가 인증 요청을 확장으로 라우팅하는 ID 공급자(Microsoft Entra ID)의 엔드포인트 URL입니다. 선택적 확장 특정 구성 구성 매개 변수 역할을 할 수 있는 사전 값입니다. Microsoft Enterprise SSO 확장의 컨텍스트에서 이러한 구성 매개 변수를 기능 플래그라고 합니다. 기능 플래그 정의를 참조하세요. 참고 항목
Apple의 SSO 확장 프로필에 대한 MDM 정의는 Microsoft가 이 스키마를 기준으로 확장을 구현한 Apple 디바이스에 대한 확장 가능한 Single Sign-On MDM 페이로드 설정 문서에서 참조할 수 있습니다. Apple 디바이스용 Microsoft Enterprise SSO 플러그 인을 참조하세요.
Microsoft Enterprise SSO 확장에 대한 올바른 프로필이 설치되어 있는지 확인하려면 확장 필드가 com.microsoft.CompanyPortalMac.ssoextension(UBF8T346G9)과 일치해야 합니다.
구성이 변경될 때 유용한 문제 해결 지표가 될 수 있으므로 구성 프로필에 설치됨 필드를 기록해 둡니다.
올바른 구성 프로필이 확인되면 애플리케이션 인증 흐름 문제 해결 섹션을 계속 진행합니다.
MDM 구성 프로필이 없음
이전 섹션을 수행한 후 SSO 확장 구성 프로필이 프로필 목록에 표시되지 않으면 MDM 구성에 사용자/디바이스 대상 지정이 활성화되어 사용자 또는 디바이스가 구성 프로필을 받지 못하도록 효과적으로 필터링할 수 있습니다. MDM 관리자에게 문의하고 다음 섹션에 있는 콘솔 로그를 수집합니다.
MDM 특정 콘솔 로그 수집
macOS 디바이스에서 Applications 폴더를 두 번 클릭한 다음 Utilities 폴더를 두 번 클릭합니다.
콘솔 애플리케이션을 두 번 클릭합니다.
시작 단추를 클릭하여 콘솔 추적 로깅을 사용하도록 설정합니다.
MDM 관리자가 구성 프로필을 이 macOS 디바이스/사용자에게 다시 배포하고 동기화 주기를 강제로 적용하도록 합니다.
검색 창에 subsystem:com.apple.ManagedClient를 입력하고 Enter 키를 누릅니다.
검색 창에서 커서가 깜박이는 위치에서 message:Extensible을 입력합니다.
이제 확장 가능한 SSO 구성 프로필 활동에서 필터링된 MDM 콘솔 로그가 표시됩니다. 다음 스크린샷은 구성 프로필이 설치되었음을 보여 주는 로그 항목 설치된 구성 프로필을 보여 줍니다.
애플리케이션 인증 흐름 문제 해결
이 섹션의 지침에서는 macOS 디바이스에 올바르게 배포된 구성 프로필이 있다고 가정합니다. 단계는 macOS 디바이스에서 SSO 구성 프로필 유효성 검사를 참조하세요.
Apple 디바이스용 Microsoft Enterprise SSO 확장이 배포되면 각 애플리케이션 유형에 대해 두 가지 유형의 애플리케이션 인증 흐름을 지원합니다. 문제를 해결할 때는 사용 중인 애플리케이션의 유형을 이해하는 것이 중요합니다.
애플리케이션 형식
응용 프로그램 유형 | 대화형 인증 | 자동 인증 | 설명 | 예제 |
---|---|---|---|---|
네이티브 MSAL 앱 | X | X | MSAL(Microsoft 인증 라이브러리)은 Microsoft ID 플랫폼(Microsoft Entra ID)을 사용하여 애플리케이션을 빌드하기 위해 맞춤화된 애플리케이션 개발자 프레임워크입니다. MSAL 버전 1.1 이상에서 빌드된 앱은 Microsoft Enterprise SSO 확장과 통합할 수 있습니다. 애플리케이션이 SSO 확장(브로커) 인식인 경우 추가 구성 없이 확장을 활용합니다. 자세한 내용은 MSAL 개발자 샘플 설명서를 참조하세요. |
Microsoft To Do |
비 MSAL 네이티브/브라우저 SSO | X | Apple 네트워킹 기술 또는 웹 보기를 사용하는 애플리케이션은 SSO 확장에서 공유 자격 증명을 가져오도록 구성할 수 있습니다. 각 앱의 번들 ID가 공유 자격 증명(PRT)을 가져올 수 있도록 기능 플래그를 구성해야 합니다. |
Microsoft Word Safari Microsoft Edge Visual Studio |
Important
모든 Microsoft 자사 네이티브 애플리케이션이 MSAL 프레임워크를 사용하는 것은 아닙니다. 이 문서를 게시할 당시, 대부분의 Microsoft Office macOS 애플리케이션은 여전히 이전 ADAL 라이브러리 프레임워크를 사용하므로 브라우저 SSO 흐름을 사용합니다.
macOS에서 애플리케이션에 대한 번들 ID를 찾는 방법
macOS 디바이스에서 Applications 폴더를 두 번 클릭한 다음 Utilities 폴더를 두 번 클릭합니다.
터미널 애플리케이션을 두 번 클릭합니다.
터미널이 열리면 프롬프트에서
osascript -e 'id of app "<appname>"'
을 입력합니다. 다음 예제를 참조하세요.% osascript -e 'id of app "Safari"' com.apple.Safari % osascript -e 'id of app "OneDrive"' com.microsoft.OneDrive % osascript -e 'id of app "Microsoft Edge"' com.microsoft.edgemac
이제 번들 ID가 수집되었으므로 비 MSAL 네이티브/브라우저 SSO 앱이 SSO 확장을 활용할 수 있도록 지침에 따라 기능 플래그를 구성합니다. 참고: 모든 번들 ID는 기능 플래그 구성에 대해 대/소문자를 구분합니다.
주의
Apple 네트워킹 기술(예: WKWebview 및 NSURLSession)을 사용하지 않는 애플리케이션은 SSO 확장의 공유 자격 증명(PRT)을 사용할 수 없습니다. Google Chrome과 Mozilla Firefox는 모두 이 범주에 속합니다. MDM 구성 프로필에 구성된 경우에도 결과는 브라우저에서 일반 인증 프롬프트가 됩니다.
부트스트래핑
기본적으로 MSAL 앱만 SSO 확장을 호출한 다음 확장은 Microsoft Entra ID에서 공유 자격 증명(PRT)을 획득합니다. 그러나 Safari 브라우저 애플리케이션 또는 기타 비 MSAL 애플리케이션은 PRT를 획득하도록 구성할 수 있습니다. 사용자가 MSAL 및 Safari 브라우저를 사용하지 않는 애플리케이션에서 로그인하도록 허용을 참조하세요. SSO 확장이 PRT를 획득하면 사용자 로그인 키 집합에 자격 증명이 저장됩니다. 다음으로, PRT가 사용자의 키 집합에 있는지 확인합니다.
PRT에 대한 키 집합 액세스 확인
macOS 디바이스에서 Applications 폴더를 두 번 클릭한 다음 Utilities 폴더를 두 번 클릭합니다.
키체인 액세스 애플리케이션을 두 번 클릭합니다.
기본 키 집합에서 로컬 항목(또는 iCloud)을 선택합니다.
- 모든 항목이 선택되어 있는지 확인합니다.
- 검색 창 오른쪽에
primaryrefresh
(필터링)를 입력합니다.
스크린샷 설명선 키 집합 자격 증명 구성 요소 설명 1 모든 항목 키 집합 액세스에서 모든 유형의 자격 증명을 표시합니다. 2 키 집합 검색 창 자격 증명으로 필터링할 수 있습니다. Microsoft Entra PRT 형식을 필터링하려면 primaryrefresh
3 종류 자격 증명 유형을 참조합니다. Microsoft Entra PRT 자격 증명은 애플리케이션 암호 자격 증명 형식입니다. 4 거래처 PRT를 소유하는 Microsoft Entra 사용자 계정을 UserObjectId.TenantId-login.windows.net
형식으로 표시합니다.5 Where 자격 증명의 전체 이름을 표시합니다. Microsoft Entra PRT 자격 증명은 primaryrefreshtoken-29d9ed98-a469-4536-ade2-f981bc1d605
형식으로 시작됩니다. 29d9ed98-a469-4536-ade2-f981bc1d605는 PRT 획득 요청을 처리하는 Microsoft 인증 브로커 서비스의 애플리케이션 ID입니다.6 수정한 날짜 자격 증명이 마지막으로 업데이트된 시점을 표시합니다. Microsoft Entra PRT 자격 증명의 경우 자격 증명이 부트스트랩되거나 대화형 로그온 이벤트에 의해 업데이트될 때마다 날짜/타임스탬프가 업데이트됩니다. 7 키 집합 선택한 자격 증명이 있는 키 집합을 나타냅니다. Microsoft Entra PRT 자격 증명은 로컬 항목 또는 iCloud 키체인에 있습니다. macOS 디바이스에서 iCloud가 사용하도록 설정되면 로컬 항목 키체인이 iCloud 키체인이 됩니다. 키 집합 액세스에서 PRT를 찾을 수 없는 경우 애플리케이션 유형에 따라 다음을 수행합니다.
- 네이티브 MSAL: 앱이 MSAL 버전 1.1 이상으로 빌드된 경우 애플리케이션 개발자가 애플리케이션에서 브로커를 인식할 수 있도록 설정했는지 확인합니다. 또한 배포 문제 해결 단계를 확인하여 검사 배포 문제를 방지합니다.
- 비 MSAL(Safari): MDM 구성 프로필에서 기능 플래그
browser_sso_interaction_enabled
가 0이 아닌 1로 설정되어 있는지 확인합니다.
PRT를 부트스트래핑한 후의 인증 흐름
공유 자격 증명(PRT)이 확인되었으므로 더 심층적인 문제 해결을 수행하기 전에 각 애플리케이션 유형에 대한 개략적인 단계와 Microsoft Enterprise SSO 확장 플러그 인(브로커 앱)과 상호 작용하는 방법을 이해하는 것이 좋습니다. 다음 애니메이션 및 설명은 macOS 관리자가 로깅 데이터를 보기 전에 시나리오를 이해하는 데 도움이 됩니다.
네이티브 MSAL 애플리케이션
시나리오: Apple 디바이스에서 실행되는 MSAL(예: Microsoft To Do 클라이언트)을 사용하도록 개발된 애플리케이션은 Microsoft Entra 보호 서비스에 액세스하기 위해 Microsoft Entra 계정으로 사용자를 로그인해야 합니다.(예: Microsoft To Do Service).
- MSAL 개발 애플리케이션은 SSO 확장을 직접 호출하고 Microsoft Entra 보호 리소스에 대한 토큰에 대한 애플리케이션 요청과 함께 PRT를 Microsoft Entra 토큰 엔드포인트로 보냅니다.
- Microsoft Entra ID는 PRT 자격 증명의 유효성을 검사하고 애플리케이션별 토큰을 SSO 확장 브로커에 다시 반환합니다.
- 그런 다음 SSO 확장 브로커는 토큰을 MSAL 클라이언트 애플리케이션에 전달하고, MSAL 클라이언트 애플리케이션은 이를 Microsoft Entra 보호 리소스로 보냅니다.
- 이제 사용자가 앱에 로그인되고 인증 프로세스가 완료되었습니다.
비 MSAL/브라우저 SSO
시나리오: Apple 디바이스의 사용자가 Safari 웹 브라우저(또는 Apple 네트워킹 스택을 지원하는 MSAL이 아닌 네이티브 앱)를 열어 Microsoft Entra 보호 리소스(예: https://office.com
)에 로그인합니다.
- MSAL이 아닌 애플리케이션(예: Safari)을 사용하여 사용자가 Microsoft Entra 통합 애플리케이션(예: office.com)에 로그인하려고 시도하면 Microsoft Entra ID에서 토큰을 가져오기 위해 리디렉션됩니다.
- 비 MSAL 애플리케이션이 MDM 페이로드 구성의 허용 목록에 있는 한, Apple 네트워크 스택은 인증 요청을 가로채 SSO 확장 브로커로 요청을 리디렉션합니다.
- SSO 확장이 가로채는 요청을 받으면 PRT가 Microsoft Entra 토큰 엔드포인트로 전송됩니다.
- Microsoft Entra ID는 PRT의 유효성을 검사하고 애플리케이션별 토큰을 SSO 확장으로 다시 반환합니다.
- 애플리케이션별 토큰은 MSAL이 아닌 클라이언트 애플리케이션에 제공되며, 클라이언트 애플리케이션은 Microsoft Entra 보호 서비스에 액세스하기 위해 토큰을 보냅니다.
- 이제 사용자가 로그인을 완료했으며 인증 프로세스가 완료되었습니다.
SSO 확장 로그 가져오기
SSO 확장의 다양한 문제를 해결하는 가장 유용한 도구 중 하나는 Apple 디바이스의 클라이언트 로그입니다.
회사 포털 앱의 SSO 확장 로그 저장
macOS 디바이스에서 Applications 폴더를 두 번 클릭합니다.
회사 포털 애플리케이션을 두 번 클릭합니다.
회사 포털이 로드되면 상단 메뉴 모음인 도움말->진단 보고서 저장으로 이동합니다. 앱에 로그인할 필요가 없습니다.
원하는 위치(예: 바탕 화면)에 회사 포털 로그 보관 파일을 저장합니다.
CompanyPortal.zip 보관 파일을 열고 텍스트 편집기를 사용하여 SSOExtension.log 파일을 엽니다.
팁
로그를 보는 편리한 방법은 Visual Studio Code를 사용하고 로그 뷰어 확장을 설치하는 것입니다.
터미널을 사용하여 macOS에서 SSO 확장 로그 추적
문제를 해결하는 동안 SSOExtension 로그를 실시간으로 마무리하는 동안 문제를 재현하는 것이 유용할 수 있습니다.
macOS 디바이스에서 Applications 폴더를 두 번 클릭한 다음 Utilities 폴더를 두 번 클릭합니다.
터미널 애플리케이션을 두 번 클릭합니다.
터미널이 열리면 다음을 입력합니다.
tail -F ~/Library/Containers/com.microsoft.CompanyPortalMac.ssoextension/Data/Library/Caches/Logs/Microsoft/SSOExtension/*
참고 항목
후행 /*는 로그가 존재할 경우 로그를 마무리함을 나타냅니다.
% tail -F ~/Library/Containers/com.microsoft.CompanyPortalMac.ssoextension/Data/Library/Caches/Logs/Microsoft/SSOExtension/* ==> /Users/<username>/Library/Containers/com.microsoft.CompanyPortalMac.ssoextension/Data/Library/Caches/Logs/Microsoft/SSOExtension/SSOExtension 2022-12-25--13-11-52-855.log <== 2022-12-29 14:49:59:281 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Handling SSO request, requested operation: 2022-12-29 14:49:59:281 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Ignoring this SSO request... 2022-12-29 14:49:59:282 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Finished SSO request. 2022-12-29 14:49:59:599 | I | Beginning authorization request 2022-12-29 14:49:59:599 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Checking for feature flag browser_sso_interaction_enabled, value in config 1, value type __NSCFNumber 2022-12-29 14:49:59:599 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Feature flag browser_sso_interaction_enabled is enabled 2022-12-29 14:49:59:599 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Checking for feature flag browser_sso_disable_mfa, value in config (null), value type (null) 2022-12-29 14:49:59:599 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Checking for feature flag disable_browser_sso_intercept_all, value in config (null), value type (null) 2022-12-29 14:49:59:600 | I | Request does not need UI 2022-12-29 14:49:59:600 | I | TID=783491 MSAL 1.2.4 Mac 13.0.1 [2022-12-29 19:49:59] Checking for feature flag admin_debug_mode_enabled, value in config (null), value type (null)
해당 문제를 재현할 때 터미널 창을 열어 두고 마무리한 SSOExtension 로그의 출력을 관찰합니다.
iOS에서 SSO 확장 로그 내보내기
macOS에서와 마찬가지로 iOS SSO 확장 로그를 실시간으로 볼 수 없습니다. iOS SSO 확장 로그는 Microsoft Authenticator 앱에서 내보낸 후 다른 디바이스에서 검토할 수 있습니다.
Microsoft Authenticator 앱을 엽니다.
왼쪽 상단의 메뉴 단추를 누릅니다.
"피드백 보내기" 옵션을 선택합니다.
"문제가 있음" 옵션을 선택합니다.
진단 데이터 보기 옵션을 누릅니다.
팁
Microsoft 지원과 협력하는 경우 이 단계에서 보내기 단추를 눌러 지원에 로그를 보낼 수 있습니다. 그러면 Microsoft 지원 담당자에게 제공할 수 있는 인시던트 ID가 제공됩니다.
로그를 iOS 디바이스의 클립보드에 복사하려면 "모두 복사" 단추를 누릅니다. 그런 다음 검토를 위해 로그 파일을 다른 곳에 저장하거나 이메일 또는 기타 파일 공유 방법을 통해 보낼 수 있습니다.
SSO 확장 로그 이해
SSO 확장 로그 분석은 Microsoft Entra ID에 인증 요청을 보내는 애플리케이션의 인증 흐름 문제를 해결하는 탁월한 방법입니다. SSO 확장 브로커가 호출될 때마다 일련의 로깅 활동 결과와 이러한 활동을 권한 부여 요청이라고 합니다. 로그에는 문제 해결을 위한 다음과 같은 유용한 정보가 포함되어 있습니다.
- 기능 플래그 구성
- 권한 부여 요청 유형
- 네이티브 MSAL
- 비 MSAL/브라우저 SSO
- 자격 증명 재시도/스토리지 작업을 위한 macOS 키 집합과의 상호 작용
- Microsoft Entra 로그인 이벤트에 대한 상관 관계 ID
- PRT 획득
- 디바이스 등록
주의
SSO 확장 로그는 특히 키 집합 자격 증명 작업을 살펴볼 때 매우 자세합니다. 이러한 이유로 문제 해결 중에 항상 로그를 보기 전에 시나리오를 이해하는 것이 가장 좋습니다.
로그 구조
SSO 확장 로그는 열로 세분화됩니다. 다음 스크린샷은 로그의 열 분석을 보여 줍니다.
Column | 열 이름 | 설명 |
---|---|---|
1 | 로컬 날짜/시간 | 표시된 로컬 날짜 및 시간 |
2 | I-정보 W-경고 E-오류 |
정보, 경고 또는 오류를 표시합니다. |
3 | TID(스레드 ID) | SSO 확장 브로커 앱 실행의 스레드 ID를 표시합니다. |
4 | MSAL 버전 번호 | Microsoft Enterprise SSO 확장 브로커 플러그 인은 MSAL 앱으로 빌드됩니다. 이 열은 브로커 앱이 실행 중인 MSAL 버전을 표시합니다. |
5 | macOS 버전 | macOS 운영 체제 버전을 표시합니다. |
6 | UTC 날짜/시간 | 표시된 UTC 날짜 및 시간 |
7 | 상관 관계 ID | Microsoft Entra ID 또는 키체인 작업과 관련된 로그의 줄은 상관 관계 ID를 사용하여 UTC 날짜/시간 열을 확장합니다. |
8 | Message | 로그의 자세한 메시지를 표시합니다. 대부분의 문제 해결 정보는 이 열을 검사하여 찾을 수 있습니다. |
기능 플래그 구성
Microsoft Enterprise SSO 확장의 MDM 구성 중에 선택적 확장별 데이터를 SSO 확장의 동작 방식을 변경하기 위한 지침으로 보낼 수 있습니다. 이러한 구성 관련 지침을 기능 플래그라고 합니다. 기능 플래그 구성은 번들 ID가 확장을 호출할지 여부를 결정할 수 있으므로 비 MSAL/브라우저 SSO 권한 부여 요청 형식에 특히 중요합니다. 기능 플래그 설명서를 참조하세요. 모든 권한 부여 요청은 기능 플래그 구성 보고서로 시작합니다. 다음 스크린샷은 기능 플래그 구성의 예를 보여 줍니다.
설명선 제목 | 기능 플래그 | 설명 |
---|---|---|
1 | browser_sso_interaction_enabled | 비 MSAL 또는 Safari 브라우저는 PRT를 부트스트랩할 수 있습니다. |
2 | browser_sso_disable_mfa | (지금은 사용되지 않음) PRT 자격 증명을 부트스트랩하는 동안 기본적으로 MFA가 필요합니다. 이 구성은 null로 설정되어 있으며 이는 기본 구성이 적용됨을 의미합니다. |
3 | disable_explicit_app_prompt | 프롬프트를 줄이기 위해 애플리케이션의 prompt=login 인증 요청을 대체합니다. |
4 | AppPrefixAllowList | com.micorosoft. 로 시작하는 번들 ID가 있는 비 MSAL 애플리케이션은 SSO 확장 브로커에서 가로채고 처리할 수 있습니다. |
Important
기능 플래그를 null로 설정하면 기본 구성이 적용됩니다. 자세한 내용은 기능 플래그 설명서를 참조하세요.
MSAL 네이티브 애플리케이션 로그인 흐름
다음 섹션에서는 네이티브 MSAL 애플리케이션 인증 흐름에 대한 SSO 확장 로그를 검사하는 방법을 안내합니다. 이 예제에서는 MSAL macOS/iOS 샘플 애플리케이션을 클라이언트 애플리케이션으로 사용하고 애플리케이션은 Microsoft Graph API를 호출하여 로그인 사용자의 정보를 표시합니다.
MSAL 네이티브: 대화형 흐름 연습
성공적인 대화형 로그온을 위해 다음 작업이 수행되어야 합니다.
- 사용자는 MSAL macOS 샘플 앱에 로그인합니다.
- Microsoft SSO 확장 브로커가 호출되어 요청을 처리합니다.
- Microsoft SSO 확장 브로커는 로그인한 사용자에 대한 PRT를 획득하기 위해 부트스트래핑 프로세스를 거칩니다.
- PRT를 키 집합에 저장합니다.
- Microsoft Entra ID(WPJ)에 디바이스 등록 개체가 있는지 확인합니다.
- User.Read의 범위를 사용하여 Microsoft Graph에 액세스하기 위해 클라이언트 애플리케이션에 액세스 토큰을 반환합니다.
Important
다음 샘플 로그 코드 조각은 그에 표시되지 않는 주석 헤더 //로 주석 처리되었습니다. 수행 중인 특정 작업을 설명하는 데 사용됩니다. 복사 및 붙여넣기 작업을 지원하기 위해 이러한 방식으로 로그 조각을 문서화했습니다. 또한 로그 예제는 문제 해결에 중요한 줄만 표시하도록 트리밍되었습니다.
사용자가 Microsoft Graph API 호출 단추를 클릭하여 로그인 프로세스를 호출합니다.
//////////////////////////
//get_accounts_operation//
//////////////////////////
Handling SSO request, requested operation: get_accounts_operation
(Default accessor) Get accounts.
(MSIDAccountCredentialCache) retrieving cached credentials using credential query
(Default accessor) Looking for token with aliases (null), tenant (null), clientId 00001111-aaaa-2222-bbbb-3333cccc4444, scopes (null)
(Default accessor) No accounts found in default accessor.
(Default accessor) No accounts found in other accessors.
Completed get accounts SSO request with a personal device mode.
Request complete
Request needs UI
ADB 3.1.40 -[ADBrokerAccountManager allBrokerAccounts:]
ADB 3.1.40 -[ADBrokerAccountManager allMSIDBrokerAccounts:]
(Default accessor) Get accounts.
No existing accounts found, showing webview
/////////
//login//
/////////
Handling SSO request, requested operation: login
Handling interactive SSO request...
Starting SSO broker request with payload: {
authority = "https://login.microsoftonline.com/common";
"client_app_name" = MSALMacOS;
"client_app_version" = "1.0";
"client_id" = "00001111-aaaa-2222-bbbb-3333cccc4444";
"client_version" = "1.1.7";
"correlation_id" = "aaaa0000-bb11-2222-33cc-444444dddddd";
"extra_oidc_scopes" = "openid profile offline_access";
"instance_aware" = 0;
"msg_protocol_ver" = 4;
prompt = "select_account";
"provider_type" = "provider_aad_v2";
"redirect_uri" = "msauth.com.microsoft.idnaace.MSALMacOS://auth";
scope = "user.read";
}
////////////////////////////////////////////////////////////
//Request PRT from Microsoft Authentication Broker Service//
////////////////////////////////////////////////////////////
Using request handler <ADInteractiveDevicelessPRTBrokerRequestHandler: 0x117ea50b0>
(Default accessor) Looking for token with aliases (null), tenant (null), clientId 11112222-bbbb-3333-cccc-4444dddd5555, scopes (null)
Attempting to get Deviceless Primary Refresh Token interactively.
Caching AAD Environements
networkHost: login.microsoftonline.com, cacheHost: login.windows.net, aliases: login.microsoftonline.com, login.windows.net, login.microsoft.com, sts.windows.net
networkHost: login.partner.microsoftonline.cn, cacheHost: login.partner.microsoftonline.cn, aliases: login.partner.microsoftonline.cn, login.chinacloudapi.cn
networkHost: login.microsoftonline.de, cacheHost: login.microsoftonline.de, aliases: login.microsoftonline.de
networkHost: login.microsoftonline.us, cacheHost: login.microsoftonline.us, aliases: login.microsoftonline.us, login.usgovcloudapi.net
networkHost: login-us.microsoftonline.com, cacheHost: login-us.microsoftonline.com, aliases: login-us.microsoftonline.com
Resolved authority, validated: YES, error: 0
[MSAL] Resolving authority: Masked(not-null), upn: Masked(null)
[MSAL] Resolved authority, validated: YES, error: 0
[MSAL] Start webview authorization session with webview controller class MSIDAADOAuthEmbeddedWebviewController:
[MSAL] Presenting web view controller.
로깅 샘플은 다음 세 개의 세그먼트로 나눌 수 있습니다.
세그먼트 | 설명 |
---|---|
get_accounts_operation |
캐시에 기존 계정이 있는지 확인합니다. - ClientID: 이 MSAL 앱에 대해 Microsoft Entra ID에 등록된 애플리케이션 ID ADB 3.1.40은 Microsoft Enterprise SSO 확장 브로커 플러그 인의 버전을 나타냅니다. |
login |
브로커가 Microsoft Entra ID에 대한 요청을 처리함: - 대화형 SSO 요청 처리...: 대화형 요청을 나타냅니다. - correlation_id: Microsoft Entra 서버 쪽 로그인 로그와의 상호 참조에 유용합니다. - scope: Microsoft Graph에서 요청되는 User.Read API 권한 범위 - client_version: 애플리케이션이 실행 중인 MSAL 버전 - redirect_uri: MSAL 앱은 msauth.com.<Bundle ID>://auth 형식을 사용합니다. |
PRT 요청 | PRT를 대화형으로 획득하기 위한 부트스트래핑 프로세스가 시작되었으며 Webview SSO 세션을 렌더링합니다. Microsoft 인증 브로커 서비스 - clientId: 29d9ed98-a469-4536-ade2-f981bc1d605e - Microsoft 인증 브로커 서비스에 대한 모든 PRT 요청이 수행됩니다. |
SSO Webview Controller가 나타나고 사용자에게 Microsoft Entra 로그인(UPN/이메일)을 입력하라는 메시지가 표시됩니다.
참고 항목
Webview Controller의 왼쪽 아래 모서리에 있는 i를 클릭하면 SSO 확장에 대한 자세한 정보와 이를 호출한 앱에 대한 세부 정보가 표시됩니다.
사용자가 Microsoft Entra 자격 증명을 성공적으로 입력하면 다음 로그 항목이 SSO 확장 로그에 기록됩니다.
SSOExtensionLogs
///////////////
//Acquire PRT//
///////////////
[MSAL] -completeWebAuthWithURL: msauth://microsoft.aad.brokerplugin/?code=(not-null)&client_info=(not-null)&state=(not-null)&session_state=(not-null)
[MSAL] Dismissed web view controller.
[MSAL] Result from authorization session callbackURL host: microsoft.aad.brokerplugin , has error: NO
[MSAL] (Default accessor) Looking for token with aliases (
"login.windows.net",
"login.microsoftonline.com",
"login.windows.net",
"login.microsoft.com",
"sts.windows.net"
), tenant (null), clientId 29d9ed98-a469-4536-ade2-f981bc1d605e, scopes (null)
Saving PRT response in cache since no other PRT was found
[MSAL] Saving keychain item, item info Masked(not-null)
[MSAL] Keychain find status: 0
Acquired PRT.
///////////////////////////////////////////////////////////////////////
//Discover if there is an Azure AD Device Registration (WPJ) present //
//and if so re-acquire a PRT and associate with Device ID //
///////////////////////////////////////////////////////////////////////
WPJ Discovery: do discovery in environment 0
Attempt WPJ discovery using tenantId.
WPJ discovery succeeded.
Using cloud authority from WPJ discovery: https://login.microsoftonline.com/common
ADBrokerDiscoveryAction completed. Continuing Broker Flow.
PRT needs upgrade as device registration state has changed. Device is joined 1, prt is joined 0
Beginning ADBrokerAcquirePRTInteractivelyAction
Attempting to get Primary Refresh Token interactively.
Acquiring broker tokens for broker client id.
Resolving authority: Masked(not-null), upn: auth.placeholder-61945244__domainname.com
Resolved authority, validated: YES, error: 0
Enrollment id read from intune cache : (null).
Handle silent PRT response Masked(not-null), error Masked(null)
Acquired broker tokens.
Acquiring PRT.
Acquiring PRT using broker refresh token.
Requesting PRT from authority https://login.microsoftonline.com/<TenantID>/oauth2/v2.0/token
[MSAL] (Default accessor) Looking for token with aliases (
"login.windows.net",
"login.microsoftonline.com",
"login.windows.net",
"login.microsoft.com",
"sts.windows.net"
), tenant (null), clientId (null), scopes (null)
[MSAL] Acquired PRT successfully!
Acquired PRT.
ADBrokerAcquirePRTInteractivelyAction completed. Continuing Broker Flow.
Beginning ADBrokerAcquireTokenWithPRTAction
Resolving authority: Masked(not-null), upn: auth.placeholder-61945244__domainname.com
Resolved authority, validated: YES, error: 0
Handle silent PRT response Masked(not-null), error Masked(null)
//////////////////////////////////////////////////////////////////////////
//Provide Access Token received from Azure AD back to Client Application//
//and complete authorization request //
//////////////////////////////////////////////////////////////////////////
[MSAL] (Default cache) Removing credentials with type AccessToken, environment login.windows.net, realm TenantID, clientID 00001111-aaaa-2222-bbbb-3333cccc4444, unique user ID dbb22b2f, target User.Read profile openid email
ADBrokerAcquireTokenWithPRTAction succeeded.
Composing broker response.
Sending broker response.
Returning to app (msauth.com.microsoft.idnaace.MSALMacOS://auth) - protocol version: 3
hash: AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00
payload: Masked(not-null)
Completed interactive SSO request.
Completed interactive SSO request.
Request complete
Completing SSO request...
Finished SSO request.
인증/권한 부여 흐름의 이 시점에서 PRT가 부트스트랩되었으며 macOS 키 집합 액세스에 표시되어야 합니다. PRT에 대한 키 집합 액세스 확인을 참조하세요. MSAL macOS 샘플 애플리케이션은 Microsoft SSO 확장 브로커에서 받은 액세스 토큰을 사용하여 사용자의 정보를 표시합니다.
다음으로 클라이언트 쪽 SSO 확장 로그에서 수집된 상관 관계 ID를 기반으로 서버 쪽 Microsoft Entra 로그인 로그를 검사합니다. 자세한 내용은 Microsoft Entra ID의 로그인 로그를 참조하세요.
상관 관계 ID 필터로 Microsoft Entra 로그인 로그 보기
- 애플리케이션이 등록된 테넌트에 대한 Microsoft Entra 로그인을 엽니다.
- 사용자 로그인(대화형)을 선택합니다.
- 필터 추가를 선택하고 상관 관계 ID 라디오 단추를 선택합니다.
- SSO 확장 로그에서 가져온 상관 관계 ID를 복사하여 붙여넣고 적용을 선택합니다.
MSAL 대화형 로그인 흐름의 경우 Microsoft 인증 브로커 서비스에 대한 대화형 로그인이 표시됩니다. 이 이벤트에서 사용자는 PRT를 부트스트랩하기 위해 암호를 입력합니다.
클라이언트 애플리케이션 요청에 대한 액세스 토큰을 획득하는 데 PRT가 사용되기 때문에 비대화형 로그인 이벤트도 있습니다. 상관 관계 ID 필터로 Microsoft Entra 로그인 로그 보기를 따르되 2단계에서는 사용자 로그인(비대화형)을 선택합니다.
로그인 로그 특성 | 설명 |
---|---|
애플리케이션 | 클라이언트 애플리케이션이 인증되는 Microsoft Entra 테넌트에서 애플리케이션 등록의 표시 이름입니다. |
애플리케이션 ID | Microsoft Entra 테넌트에서 애플리케이션 등록의 ClientID라고도 합니다. |
리소스 | 클라이언트 애플리케이션이 액세스 권한을 획득하려고 하는 API 리소스. 이 예제에서 리소스는 Microsoft Graph API입니다. |
수신 토큰 유형 | 들어오는 토큰 유형 PRT(기본 새로 고침 토큰)에는 리소스에 대한 액세스 토큰을 획득하는 데 사용되는 입력 토큰이 표시됩니다. |
사용자 에이전트 | 이 예제의 사용자 에이전트 문자열은 Microsoft SSO 확장이 이 요청을 처리하는 애플리케이션임을 보여 줍니다. SSO 확장이 사용되고 브로커 인증 요청이 발생한다는 것을 나타내는 유용한 지표입니다. |
Microsoft Entra 앱 인증 라이브러리 | MSAL 애플리케이션을 사용하는 경우 라이브러리 및 플랫폼의 세부 정보가 여기에 기록됩니다. |
Oauth 범위 정보 | 액세스 토큰에 대해 요청된 Oauth2 범위 정보입니다. (User.Read,profile,openid,email). |
MSAL 네이티브: 자동 흐름 연습
일정 기간이 지나면 액세스 토큰이 더 이상 유효하지 않습니다. 따라서 사용자가 Microsoft Graph API 호출 단추를 다시 클릭하는 경우 SSO 확장은 이미 획득한 PRT를 사용하여 액세스 토큰을 새로 고치려고 시도합니다.
SSOExtensionLogs
/////////////////////////////////////////////////////////////////////////
//refresh operation: Assemble Request based on User information in PRT /
/////////////////////////////////////////////////////////////////////////
Beginning authorization request
Request does not need UI
Handling SSO request, requested operation: refresh
Handling silent SSO request...
Looking account up by home account ID dbb22b2f, displayable ID auth.placeholder-61945244__domainname.com
Account identifier used for request: Masked(not-null), auth.placeholder-61945244__domainname.com
Starting SSO broker request with payload: {
authority = "https://login.microsoftonline.com/<TenantID>";
"client_app_name" = MSALMacOS;
"client_app_version" = "1.0";
"client_id" = "00001111-aaaa-2222-bbbb-3333cccc4444";
"client_version" = "1.1.7";
"correlation_id" = "aaaa0000-bb11-2222-33cc-444444dddddd";
"extra_oidc_scopes" = "openid profile offline_access";
"home_account_id" = "<UserObjectId>.<TenantID>";
"instance_aware" = 0;
"msg_protocol_ver" = 4;
"provider_type" = "provider_aad_v2";
"redirect_uri" = "msauth.com.microsoft.idnaace.MSALMacOS://auth";
scope = "user.read";
username = "auth.placeholder-61945244__domainname.com";
}
//////////////////////////////////////////
//Acquire Access Token with PRT silently//
//////////////////////////////////////////
Using request handler <ADSSOSilentBrokerRequestHandler: 0x127226a10>
Executing new request
Beginning ADBrokerAcquireTokenSilentAction
Beginning silent flow.
[MSAL] Resolving authority: Masked(not-null), upn: auth.placeholder-61945244__domainname.com
[MSAL] (Default cache) Removing credentials with type AccessToken, environment login.windows.net, realm <TenantID>, clientID 00001111-aaaa-2222-bbbb-3333cccc4444, unique user ID dbb22b2f, target User.Read profile openid email
[MSAL] (MSIDAccountCredentialCache) retrieving cached credentials using credential query
[MSAL] Silent controller with PRT finished with error Masked(null)
ADBrokerAcquireTokenWithPRTAction succeeded.
Composing broker response.
Sending broker response.
Returning to app (msauth.com.microsoft.idnaace.MSALMacOS://auth) - protocol version: 3
hash: AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00
payload: Masked(not-null)
Completed silent SSO request.
Request complete
Completing SSO request...
Finished SSO request.
로깅 샘플은 다음 두 개의 세그먼트로 나눌 수 있습니다.
세그먼트 | 설명 |
---|---|
refresh |
브로커가 Microsoft Entra ID에 대한 요청을 처리함: - 자동 SSO 요청 처리...: 자동 요청을 나타냅니다. - correlation_id: Microsoft Entra 서버 쪽 로그인 로그와의 상호 참조에 유용합니다. - scope: Microsoft Graph에서 요청되는 User.Read API 권한 범위 - client_version: 애플리케이션이 실행 중인 MSAL 버전 - redirect_uri: MSAL 앱은 msauth.com.<Bundle ID>://auth 형식을 사용합니다.새로 고침을 수행하면 요청 페이로드가 획기적으로 달라집니다. - 인증 기관: 공통 엔드포인트가 아닌 Microsoft Entra 테넌트 URL 엔드포인트를 포함합니다. - home_account_id: 사용자 계정을 <UserObjectId>.<TenantID> 형식으로 표시합니다. - username: 해시된 UPN 형식 auth.placeholder-XXXXXXXX__domainname.com |
PRT 새로 고침 및 액세스 토큰 획득 | 이 작업은 호출 클라이언트 애플리케이션에 액세스 토큰을 다시 반환하기 전에 PRT의 유효성을 다시 검사하고 필요한 경우 새로 고칩니다. |
클라이언트 쪽 SSO 확장 로그에서 가져오는 상관 관계 ID를 다시 가져와 서버 쪽 Microsoft Entra 로그인 로그와 상호 참조할 수 있습니다.
Microsoft Entra 로그인은 이전 대화형 로그인 섹션의 로그인 작업과 동일한 정보를 Microsoft Graph 리소스에 표시합니다.
비 MSAL/브라우저 SSO 애플리케이션 로그인 흐름
다음 섹션에서는 비MSAL/브라우저 애플리케이션 인증 흐름에 대한 SSO 확장 로그를 검사하는 방법을 안내합니다. 이 예제에서는 Apple Safari 브라우저를 클라이언트 애플리케이션으로 사용하고 애플리케이션은 Office.com(OfficeHome) 웹 애플리케이션을 호출합니다.
비 MSAL/브라우저 SSO 흐름 연습
성공적인 로그온을 위해 다음 작업이 수행되어야 합니다.
- 부트스트래핑 프로세스를 이미 수행한 사용자에게는 기존 PRT가 있다고 가정합니다.
- 디바이스에서 Microsoft SSO 확장 브로커가 배포된 상태에서 구성된 기능 플래그를 확인하여 SSO 확장에서 애플리케이션을 처리할 수 있는지 검토합니다.
- Safari 브라우저는 Apple 네트워킹 스택을 준수하므로 SSO 확장은 Microsoft Entra 인증 요청을 가로채려고 합니다.
- PRT는 요청 중인 리소스에 대한 토큰을 획득하는 데 사용됩니다.
- 디바이스가 Microsoft Entra에 등록된 경우 요청과 함께 디바이스 ID를 전달합니다.
- SSO 확장은 리소스에 로그인하기 위한 브라우저 요청의 헤더를 채웁니다.
다음 클라이언트 쪽 SSO 확장 로그는 요청을 처리하기 위해 SSO 확장 브로커가 투명하게 처리하는 요청을 보여 줍니다.
SSOExtensionLogs
Created Browser SSO request for bundle identifier com.apple.Safari, cookie SSO include-list (
), use cookie sso for this app 0, initiating origin https://www.office.com
Init MSIDKeychainTokenCache with keychainGroup: Masked(not-null)
[Browser SSO] Starting Browser SSO request for authority https://login.microsoftonline.com/common
[MSAL] (Default accessor) Found 1 tokens
[Browser SSO] Checking PRTs for deviceId 73796663
[MSAL] [Browser SSO] Executing without UI for authority https://login.microsoftonline.com/common, number of PRTs 1, device registered 1
[MSAL] [Browser SSO] Processing request with PRTs and correlation ID in headers (null), query aaaa0000-bb11-2222-33cc-444444dddddd
[MSAL] Resolving authority: Masked(not-null), upn: Masked(null)
[MSAL] No cached preferred_network for authority
[MSAL] Caching AAD Environements
[MSAL] networkHost: login.microsoftonline.com, cacheHost: login.windows.net, aliases: login.microsoftonline.com, login.windows.net, login.microsoft.com, sts.windows.net
[MSAL] networkHost: login.partner.microsoftonline.cn, cacheHost: login.partner.microsoftonline.cn, aliases: login.partner.microsoftonline.cn, login.chinacloudapi.cn
[MSAL] networkHost: login.microsoftonline.de, cacheHost: login.microsoftonline.de, aliases: login.microsoftonline.de
[MSAL] networkHost: login.microsoftonline.us, cacheHost: login.microsoftonline.us, aliases: login.microsoftonline.us, login.usgovcloudapi.net
[MSAL] networkHost: login-us.microsoftonline.com, cacheHost: login-us.microsoftonline.com, aliases: login-us.microsoftonline.com
[MSAL] Resolved authority, validated: YES, error: 0
[MSAL] Found registration registered in login.microsoftonline.com, isSameAsRequestEnvironment: Yes
[MSAL] Passing device header in browser SSO for device id 43cfaf69-0f94-4d2e-a815-c103226c4c04
[MSAL] Adding SSO-cookie header with PRT Masked(not-null)
SSO extension cleared cookies before handling request 1
[Browser SSO] SSO response is successful 0
[MSAL] Keychain find status: 0
[MSAL] (Default accessor) Found 1 tokens
Request does not need UI
[MSAL] [Browser SSO] Checking PRTs for deviceId 73796663
Request complete
SSO 확장 로그 구성 요소 | 설명 |
---|---|
만든 브라우저 SSO 요청 | 모든 비 MSAL/브라우저 SSO 요청은 다음 줄로 시작합니다. - 번들 식별자: 번들 ID: com.apple.Safari - 시작 원본: Microsoft Entra ID(https://office.com)의 로그인 URL 중 하나를 누르기 전에 브라우저가 액세스하는 웹 URL입니다. |
권한에 대한 브라우저 SSO 요청 시작 | PRT 수와 디바이스가 등록되었는지 여부를 확인합니다. https://login.microsoftonline.com/common, PRT 수 1개, 등록된 디바이스 1개 |
상관 관계 ID | [브라우저 SSO] 헤더(null)에서 PRT 및 상관 관계 ID를 사용하여 요청 처리, <CorrelationID> 쿼리. 이 ID는 Microsoft Entra 서버 쪽 로그인 로그와의 상호 참조에 중요합니다. |
디바이스 등록 | 선택적으로 디바이스가 Microsoft Entra에 등록된 경우 SSO 확장은 브라우저 SSO 요청에서 디바이스 헤더를 전달할 수 있습니다. - 등록된 등록이 발견됨 - login.microsoftonline.com, isSameAsRequestEnvironment: Yes 디바이스 ID에 대한 브라우저 SSO에서 디바이스 헤더 전달 43cfaf69-0f94-4d2e-a815-c103226c4c04 |
그런 다음 브라우저 SSO 확장 로그에서 가져오는 상관 관계 ID를 사용하여 Microsoft Entra 로그인 로그를 상호 참조합니다.
로그인 로그 특성 | 설명 |
---|---|
애플리케이션 | 클라이언트 애플리케이션이 인증되는 Microsoft Entra 테넌트에서 애플리케이션 등록의 표시 이름입니다. 이 예제에서 표시 이름은 OfficeHome입니다. |
애플리케이션 ID | Microsoft Entra 테넌트에서 애플리케이션 등록의 ClientID라고도 합니다. |
리소스 | 클라이언트 애플리케이션이 액세스 권한을 획득하려고 하는 API 리소스. 이 예제에서 리소스는 OfficeHome 웹 애플리케이션입니다. |
수신 토큰 유형 | 들어오는 토큰 유형 PRT(기본 새로 고침 토큰)에는 리소스에 대한 액세스 토큰을 획득하는 데 사용되는 입력 토큰이 표시됩니다. |
인증 방법이 검색됨 | 인증 세부 정보 탭에서 Microsoft Entra SSO 플러그 인 값은 브라우저 SSO 요청을 용이하게 하기 위해 SSO 확장이 사용되고 있음을 나타내는 유용한 표시입니다. |
Microsoft Entra SSO 확장 버전 | 추가 세부 정보 탭에서 이 값은 Microsoft Enterprise SSO 확장 브로커 앱의 버전을 보여 줍니다. |
디바이스 ID | 디바이스가 등록된 경우 SSO 확장은 디바이스 ID를 전달하여 디바이스 인증 요청을 처리할 수 있습니다. |
운영 체제 | 운영 체제 유형을 표시합니다. |
규격 | SSO 확장은 디바이스 헤더를 전달하여 규정 준수 정책을 용이하게 할 수 있습니다. 요구 사항은 다음과 같습니다. - Microsoft Entra 디바이스 등록 - MDM 관리 - Intune 또는 Intune 파트너 규정 준수 |
관리 | 디바이스가 관리 중임을 나타냅니다. |
조인 유형 | macOS 및 iOS가 등록된 경우 Microsoft Entra 등록 형식만 가능합니다. |
팁
Jamf Connect를 사용하는 경우 Jamf Connect를 Microsoft Entra ID와 통합하는 방법에 대한 최신 Jamf 지침을 따르는 것이 좋습니다. 권장되는 통합 패턴을 사용하면 Jamf Connect가 조건부 액세스 정책 및 Microsoft Entra ID 보호와 제대로 작동하도록 보장됩니다.