加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

检测adaljs-angular4中是否可以使用silentlogin

发布时间:2020-12-17 10:25:40 所属栏目:安全 来源:网络整理
导读:我正在角色6项目中使用库adal-angular4@3.0.13. 我尝试做以下事情: 如果可以使用office365进行silentlogin(登录而不提示用户输入凭据),则执行silentlogin(使用_adalService.login() 如果无法使用silentlogin,则在欢迎屏幕中显示“登录”按钮. 当我通过azure
我正在角色6项目中使用库adal-angular4@3.0.13.
我尝试做以下事情:

>如果可以使用office365进行silentlogin(登录而不提示用户输入凭据),则执行silentlogin(使用_adalService.login()
>如果无法使用silentlogin,则在欢迎屏幕中显示“登录”按钮.

当我通过azure-ad / o365身份验证并且cookie仍然有效时,可以使用silentlogin.

要找出,如果可以使用silentlogin,我尝试了以下内容:

try {
  let token = await this._adal.acquireToken(this._config.clientId).toPromise();
  return true;
} catch (e) {
  console.log('acquireToken error',e);
  return false;
}

但它总会回归:

User login is required

但是当调用_adalService.login()时,它会执行一个silentlogin.

我的问题:
如果adaljs可以在没有提示输入凭据的情况下登录(我应该可以,例如从o365-cookie中读取),我该如何找到?

您应该将PlatformBehavior.Auto传递给PlatformParameters参数 AcquireToken,而不是尝试确定是否可以使用静默登录.

问题是adal.js实际上不支持所需的重载,您不能将此值指定为extraQueryParameter.在那里,我认为你可以使用提示查询参数,但似乎并非如此.

乍一看,似乎你不能这样做.但是您的错误消息提供了线索.

从adal.js源代码中,我可以看到在这种情况下显示的消息:

if (!this._user && !(this.config.extraQueryParameter && this.config.extraQueryParameter.indexOf('login_hint') !== -1)) {
    this.warn('User login is required');
    callback('User login is required',null,'login required');
    return;
}

在this article中,login_hint描述如下:

Can be used to pre-fill the username/email address field of the sign
in page for the user,if you know their username ahead of time. Often
apps will use this parameter during re-authentication,having already
extracted the username from a previous sign-in using the
preferred_username claim.

…当你想要进行静默身份验证时,所有这些都很有意义,但仍然需要说明你要进行身份验证的人.

为了最终回答这个问题,您似乎应该将“login_hint=myemail@example.com”添加到config.extraQueryParameter中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读