Spring云微服务的Azure AD登录/注销实现

时间:2016-10-15 05:09:21

标签: azure azure-active-directory spring-security-oauth2

我想实现登录和注销功能,并使用Azure Active Directory检索用户和用户角色等用户详细信息。

我们正在使用Docker在Azure云上部署Spring cloud microservices project。您能否建议我获取用户详细信息的步骤?

我们是否需要使用JWT使用Spring云OAuth2安全保护所有微服务边缘点,或者我们是否可以保护一个Web微服务?我是否需要任何权限,特定用户角色才能实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以在此处找到Azure有关AAD的OAuth 2.0支持的文档

https://docs.microsoft.com/en-us/azure/active-directory/active-directory-protocols-oauth-code

我有一个使用OAuth 2.0与不同身份验证服务器的应用程序,我将要看看我是否可以使用AAD作为身份验证服务器。但是,无论最终成为您的Auth服务器,应用程序的其余部分应该是相同的......

  • Auth Server处理登录(通常为单点登录模式)
  • Auth服务器将返回一个Json Web令牌(在某些时候,取决于用于检索它的授权类型)
  • JWT应包含在每个后续请求中,以确保调用者具有授权

从Spring的角度来看,您至少需要一个SSO客户端(由@EnableOAuthSSO注释表示)。如果由该进程托管的所有内容,您将需要JWT来调用后续方法。如果您在其他进程中托管了进程,那么您可能也希望它们也受到保护。使用@EnableResourceServer注释将配置Spring Security以查找JWT,如果请求没有,则不要尝试检索JWT。

除非端点是可公开访问的,否则您需要保护它。当然,我真的不知道你的应用程序的上下文,所以这个陈述纯粹是一个不知情的意见,基于你对你的应用程序尝试做什么的零知识。把它拿走它的价值。

修改

这比我原先想象的要复杂一点。我已经能够编写一些代码来动态检索Microsoft的公钥,以验证返回的JWT。

但是,主要问题是Azure AD在充当身份/身份验证服务器时支持Open Id Connect。而且,目前,spring-security-oauth2不支持Open Id Connect。

我能够对spring代码进行一些小的更改,但I did ask the question to the Spring group并且他们正积极致力于添加对Open Id Connect的支持。他们希望有两个月的释放(是啊?)。

从短期来看,oauth2支持不支持Open Id Connect。鉴于这是AAD使用的协议,oauth2的当前版本将不适用于AAD。也就是说,我很乐意等待不应该太长的官方​​支持。