如何使用 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 AD B2C 中管理用户流之间的单个帐户/会话