Share via


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 요청이 실패합니다. 해결 방법으로 프롬프트 값 noneloginPopup와 같은 대화형 요청에 전달할 수 있습니다. 그런 다음 MSAL.js는 Microsoft Entra ID에 대한 팝업 창을 열고 Microsoft Entra ID는 기존 세션 쿠키를 활용하여 프롬프트 값을 따릅니다. 이 경우 사용자에게 간단한 팝업 창이 표시되지만 자격 증명을 입력하라는 메시지는 표시되지 않습니다.

다음 단계