在对AzureAD进行身份验证后,我的应用程序可以进行单点登录吗?
可能的流程:
下次我使用我的应用程序如果我有一个有效的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>
答案 0 :(得分:2)
使用acquireTokenSilent代替loginPopup,并将您的客户端ID作为范围传递。如果承诺被拒绝,那么您需要调用其他一个函数来登录。
答案 1 :(得分:1)
如果指定租户并且之前只有一位用户签署了azure广告,则可以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)。如果这是一个多租户应用(使用common
而不是租户ID),则无法避免用户选择带有azure ad v2.0端点的页面。
注意:如果用户使用多个帐户登录了azure广告,则无法避免用户选择页面,即按设计,用户应该有机会选择他或她想要用于登录的帐户。申请。