【发布时间】:2021-04-09 19:00:38
【问题描述】:
我们使用 Azure AD 进行身份验证和授权。我们的 angular spa 已通过 Azure AD 启用 SSO。我们需要保护我们的后端 服务,并且只允许具有有效 jwt 令牌的 API。
到目前为止,我们所做的是:
-
在 Azure AD 中注册了我们的 Angular 应用。
-
我们已经将 spring 微服务配置为资源服务器,并且 应用程序属性包含 jwt.issuer-uri
spring.security.oauth2.resourceserver.jwt.issuer-uri=XXXXXXXXXXX-XXXXXXXXX-XXXXXXX-XXXXXXXXXXXX
问题是我们从 Azure AD 获得的令牌的受众为 "00000003-0000-0000-c000-000000000000",这意味着该令牌是为 Microsoft 图表生成的。我还尝试使用此令牌访问图形 Api,它起作用了。但是我们想要的是在我们自己的spring微服务中验证这个token并授予权限 基于提供的 jwt。
为了解决这个问题,我必须在我们的 Azure 注册 Angular 应用程序中进行一些配置更改。我添加了一个自定义 scope api:///app 并使用 获取令牌时的此范围。现在令牌正在后端验证,API 工作正常。
此配置以某种方式有效,但对我来说似乎不正确。我是 azure 的新手,所以不确定所有的东西是如何联系起来的。
- 现在正在生成的新令牌的受众是我们的 角度温泉客户端ID。这个对吗?不应该是后台吗 服务?任何为什么它会被后端验证 当前配置?
- 我的理解是我们不必注册我们的spring 带有 Azure 广告的微服务。我将只充当资源服务器 将使用 发行者网址。
- 如果我们需要使用 azure AD 注册我们的后端服务,那么 对所有微服务都做同样的事情会不会很困难?
我已经通过引用完成了所有设置。 https://ordina-jworks.github.io/security/2020/08/18/Securing-Applications-Azure-AD.html
在其他一些链接中,我发现用于设置后端服务的配置完全不同。我不确定哪一个是正确的。 https://docs.microsoft.com/en-us/java/api/overview/azure/active-directory-spring-boot-starter-readme?view=azure-java-stable
【问题讨论】:
标签: azure spring-boot spring-security oauth-2.0 azure-active-directory