angular - 如何以静默方式将浏览器重定向到重定向 Uri 以避免身份验证弹出 (AAD)
问题描述
我们正在开发一个项目,我们正在使用 Azure Active Directory 对用户进行身份验证。身份验证成功后,用户的浏览器会收到一个 Id 和访问令牌,然后我们使用相同的访问令牌来查询其他 Microsoft 产品(Sharepoint、OneDrive 等)。
当用户尝试在我们的应用程序上搜索某些内容时,我们还必须使用 Elastic Search 对用户进行身份验证。为此,我们在弹性搜索集群上设置了一个弹性 OIDC 领域,并使用自定义 Web 应用程序作为依赖方对我们的用户进行身份验证。简而言之,通过将浏览器重定向到发送回 AAD 的重定向 Uri (dataset1**),要求之前成功通过身份验证的同一用户再次在弹性中进行身份验证。但是,当在用户浏览器中完成重定向时,身份验证弹出窗口再次出现,客户端必须选择用户名才能获得响应。但是,会从缓存存储中获取访问令牌,并且不会再次请求密码。
有没有办法避免打开 Microsoft 身份验证页面(第二次)并静默获取令牌?我们可以将用户重定向到身份验证页面,但它不应该要求用户单击他们的用户名,而应该使用令牌返回应用程序。
数据集1**
这是我的角度代码,它将用户重定向到重定向 uri –</p>
AuthenticateElastic(): void {
this.azureFunctionService.PrepElastic()
.subscribe((authenticationResponse: any) => {
this.dataShareService.setstate(authenticationResponse.state);
this.dataShareService.setnonce(authenticationResponse.nonce);
**document.location.href = authenticationResponse.redirect;**
});
}
在 dataset1** 上共享的重定向 URI 是为 document.location.href 设置的,它重定向用户浏览器并且身份验证弹出窗口再次出现。 document.location.href = authenticationResponse.redirect;
解决方案
为了静默地重定向呼叫,我按照文档https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow确认同时通过了 prompt=none&login_hint= “我的用户名@xyz.com”。传递这两个参数可以解决问题。
谢谢
推荐阅读
- sql-server - 需要在所有非系统数据库上运行存储过程
- python - OpenCV 找不到棋盘角
- java - java.sql.SQLException:没有这样的列:接受sql查询后
- rebus - Rebus Pub Sub:检索订阅者的标头
- android-studio - Android Studio 构建变体问题
- angularjs - 如何在 CKEditor 自定义插件中访问 AngularJS 服务/工厂
- javascript - Nodejs firesbase firestore 不使用 admin sdk 检索任何数据
- python - 如何停止从任务运行的 Airflow DAG
- swift - Swift Firebase 获取数据到类对象
- spring-boot - 使用 JWT 的 Spring Boot 应用程序的 HttpServletRequest 中缺少授权令牌