2017-05-11 1 views
1

이미 AzureAD에 인증되었을 때 내 애플리케이션에 싱글 사인온을 할 수 있습니까?MSAL.js의 싱글 사인온?

Prossible 흐름 : https://login.microsoftonline.com/tenantid/oauth2/authorize?client_id=clientid (틱)에 옴 내 응용 프로그램

  • 에 AzureAD 사용자
  • 이동로 서명

    1. -> 토큰을 반환하고 내 응용 프로그램
    2. 로 다시 리디렉션

    다음 번에는 유효한 쿠키가 있다면 응용 프로그램을 사용합니다. microsoftonline.com으로 리디렉션되지 않고 내 응용 프로그램을 사용할 수 있습니다. 앱에 직접 연결됩니다. 한마디로

    , 나는 최종 사용자를위한 팝업을 표시하지 않고 콜백을 좀하고 싶습니다 : 세입자와 하나의 사용자를 지정하는 경우

    <script class="pre"> var userAgentApplication = new Msal.UserAgentApplication("your_client_id", null, function (errorDes, token, error, tokenType) { // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) }) userAgentApplication.loginPopup(["user.read"]).then(function(token) { var user = userAgentApplication.getUser(); if (user) { // signin successful } else { // signin failure } }, function (error) { // handle error }); </script>

  • 답변

    1

    전에 푸른 광고에 서명, 당신은 할 수 prompt=none (기본값)으로 앱에 직접 로그인하십시오. 당신은 MSAL.JS으로, MSAL.JS의 소스 코드를 참조하는 것이 달성 할 수 없습니다

    var urlNavigate = authenticationRequest.createNavigateUrl(scopes) + "&prompt=select_account" + "&response_mode=fragment"; 
    

    그것은 계정 페이지를 선택하는 사용자를 리디렉션합니다 prompt=select_account을 설정합니다. Azure AD 계정을 사용 중이고 특정 거주자 만 로그인하려는 경우 ADAL.JS를 시도 할 수 있습니다 (프롬프트 = select_account를 강제 실행하지 않음). 멀티 테넌트 앱인 경우 (테넌트 ID 대신 common 사용) azure ad v2.0 엔드 포인트가있는 사용자 선택 페이지는 피할 수 없습니다.

    알림 : 사용자가 여러 계정으로 푸른 광고에 로그인 한 경우 사용자가 페이지를 선택하는 것을 피할 수는 없습니다. 즉 의도적으로 사용자는 로그인에 사용할 계정을 선택할 수 있어야합니다. 응용 프로그램.

    +0

    감사합니다. ADAL.js와 작동하지만 MSAL로 마이그레이션하려고했습니다. – thllbrg

    1

    acquireTokenSilent 대신 loginPopup을 사용하고 클라이언트 ID를 범위로 전달하십시오. 약속이 거부되면 다른 기능 중 하나를 호출하여 로그인해야합니다.