2017-05-11 121 views
1

當我的應用程序已經通過AzureAD認證後,它可以獲得單點登錄嗎?單點登錄MSAL.js?

Prossible流量:

  1. 登錄爲一個AzureAD用戶
  2. 轉到我的應用程序
  3. 重定向到 https://login.microsoftonline.com/tenantid/oauth2/authorize?client_id=clientid(ISH) - >它返回一個令牌和 重定向回我的申請

下一次我使用我的應用程序,如果我有一個有效的cookie我沒有重定向到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(不會強制prompt = select_account)。如果這是一個多租戶應用程序(使用common而不是租戶ID),則無法避免用戶選擇帶有天藍色廣告v2.0端點的頁面。

注意:如果用戶使用多個帳戶登錄到天藍色的廣告,則無法避免用戶選擇頁面,也就是說,在設計上,用戶應該有機會選擇他或她希望用於登錄的帳戶應用程序 。

+0

謝謝,得到它與ADAL.js工作,但希望遷移到MSAL。 – thllbrg

1

使用acquireTokenSilent代替loginPopup,並傳遞您的客戶端ID作爲範圍。如果承諾被拒絕,那麼你需要調用其他功能之一登錄。