MSAL.js의 프롬프트 동작
MSAL.js에서는 로그인 또는 토큰 요청 메서드의 일부로 프롬프트 값을 전달할 수 있습니다. 애플리케이션 시나리오에 따라 요청 개체에서 prompt 매개 변수를 설정하여 요청에 대한 Microsoft Entra 프롬프트 동작을 사용자 지정할 수 있습니다.
import { PublicClientApplication } from "@azure/msal-browser";
const pca = new PublicClientApplication({
auth: {
clientId: "YOUR_CLIENT_ID"
}
});
const loginRequest = {
scopes: ["user.read"],
prompt: 'select_account',
}
pca.loginPopup(loginRequest)
.then(response => {
// do something with the response
})
.catch(error => {
// handle errors
});
지원되는 프롬프트 값
Microsoft ID 플랫폼으로 인증할 때 다음 프롬프트 값을 사용할 수 있습니다.
매개 변수 | 동작 |
---|---|
login |
Single-Sign On을 무효화면서, 사용자가 요청에 자신의 자격 증명을 입력하도록 합니다. |
none |
이는 사용자에게 어떤 대화형 메시지도 표시되지 않도록 합니다. SSO(Single Sign-On)를 사용하여 요청을 자동으로 완료할 수 없는 경우 Microsoft ID 플랫폼은 login_required 또는 interaction_required 오류를 반환합니다. |
consent |
사용자가 로그인한 후에 OAuth 동의 대화 상자를 트리거하여 앱에 권한을 부여할 것을 사용자에게 요청합니다. |
select_account |
세션의 모든 계정을 나열하는 계정 선택 환경을 제공하거나 다른 계정을 모두 선택할 수 있는 옵션을 제공하여 Single Sign-On을 중단합니다. |
create |
외부 사용자가 계정을 만들 수 있도록 등록 대화 상자를 트리거합니다. 자세한 내용은 셀프 서비스 등록을 참조하세요. |
MSAL.js는 지원되지 않는 프롬프트 값에 대해 invalid_prompt
오류를 발생시킵니다.
invalid_prompt_value: Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest Given value: my_custom_prompt
기본 프롬프트 값
다음은 MSAL.js에서 사용하는 기본 프롬프트 값을 보여 줍니다.
MSAL.js 메서드 | 기본값 프롬프트 | 허용된 프롬프트 |
---|---|---|
loginPopup |
해당 없음 | 모두 |
loginRedirect |
해당 없음 | 모두 |
ssoSilent |
none |
해당 없음(무시) |
acquireTokenPopup |
해당 없음 | 모두 |
acquireTokenRedirect |
해당 없음 | 모두 |
acquireTokenSilent |
none |
해당 없음(무시) |
참고 항목
prompt는 프로토콜 수준 매개 변수이며 원하는 인증 동작을 ID 공급자에 알립니다. 이는 MSAL.js 동작에 영향을 주지 않으며 MSAL.js는 서비스가 궁극적으로 요청을 처리하는 방법을 제어할 수 없습니다. 대부분의 경우 Microsoft Entra ID는 요청을 수락하려고 시도합니다. 이것이 가능하지 않은 경우 오류 응답을 반환하거나 지정된 프롬프트 값을 완전히 무시할 수 있습니다.
prompt=none을 사용한 대화형 요청
일반적으로 자동 요청을 해야 하는 경우 자동 MSAL.js 메서드(ssoSilent
, acquireTokenSilent
)를 사용하고 대화형 메서드(loginPopup
, loginRedirect
, acquireTokenPopup
, acquireTokenRedirect
)로 모든 login_required 또는 interaction_required 오류를 처리합니다.
그러나 경우에 따라 프롬프트 값 none
을 대화형 MSAL.js 메서드와 함께 사용하여 자동 인증을 달성할 수 있습니다. 예를 들어, 일부 브라우저의 타사 쿠키 제한으로 인해 Microsoft Entra ID를 사용한 활성 사용자 세션에도 불구하고 ssoSilent
요청이 실패합니다. 해결 방법으로 프롬프트 값 none
을 loginPopup
와 같은 대화형 요청에 전달할 수 있습니다. 그런 다음 MSAL.js는 Microsoft Entra ID에 대한 팝업 창을 열고 Microsoft Entra ID는 기존 세션 쿠키를 활용하여 프롬프트 값을 따릅니다. 이 경우 사용자에게 간단한 팝업 창이 표시되지만 자격 증명을 입력하라는 메시지는 표시되지 않습니다.