如何使用 Azure AD 为应用服务上的 Spring Boot 应用设置重定向 URI

Posted

技术标签:

【中文标题】如何使用 Azure AD 为应用服务上的 Spring Boot 应用设置重定向 URI【英文标题】:How to set Redirect URI for Spring Boot App on App Service using Azure AD 【发布时间】:2020-03-14 05:46:22 【问题描述】:

我按照以下教程在本地部署了一个使用 Azure AD 的 Spring Boot Web 应用程序:

https://dev.to/azure/using-spring-security-with-azure-active-directory-mga

这在本地运行良好,我已将应用程序部署到 Azure 应用服务。为了正确重定向 Oauth,我正在应用服务上配置重定向 URI,Azure GUI 需要一个以“https://”开头的 OAuth 重定向 URI,而 Spring boot 需要一个格式为“http://[domain]:[port]/login/oauth2/code/azure”的重定向 URI。

有没有办法将 Spring 配置为期望以“https://”开头的 URI

我尝试更新以下没有帮助的应用程序属性。有一种解决方法可以将 Type=Public client/native 与“http”URI 一起使用。有没有更好的解决方案?

spring.security.oauth2.client.registration.azure.redirect-uri-template=baseUrl/login/oauth2/code/registrationId

【问题讨论】:

文章链接失效了,是404。而且肯定需要https。本地主机允许,但除此之外。授权码等不应传递给不安全的端点,因此会被阻止。 但遗憾的是我并不真正了解 Spring:\ 【参考方案1】:

在应用服务中,前端正在卸载 SSL。对于 Tomcat 和 WildFly 图像,我们添加了一个过滤器,负责在 web worker 机器上对上下文进行水合。

不幸的是,如果客户使用自己的 Web 服务器(例如 Spring Boot),他们将需要添加自定义逻辑(例如我们的过滤器中的逻辑)来解决此问题。

其他选项,是依靠应用服务通过应用服务EasyAuth功能进行身份验证:https://docs.microsoft.com/en-us/azure/app-service/overview-authentication-authorization

【讨论】:

【参考方案2】:

使用 Spring 的新 azure-spring-boot-starter-active-directory 依赖项,您可以添加 azure.activedirectory.redirect-uri-template 属性。

例如application.yml:

azure:
  activedirectory:
    tenant-id: <id>
    client-id: <id>
    client-secret: <secret>
    redirect-uri-template: https://app.example.com/login/oauth2/code/

【讨论】:

以上是关于如何使用 Azure AD 为应用服务上的 Spring Boot 应用设置重定向 URI的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 /common 端点上的 user_impersonation 范围生成的令牌获取所有 Azure AD 帐户列表

Azure 实践系列 3:Azure AD中的服务器管理

如何在 Azure AD B2C 中管理用户流之间的单个帐户/会话

ASP.NET Core Azure AD OpenID - 生产服务器上的令牌签名验证失败

Azure AD B2C初识

如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?