我想使用Azure Active Directory实现登录和注销功能,并检索用户详细信息,如用户名和用户角色。
我们使用Docker在Azure云上部署Spring云微服务项目。你能告诉我获取用户详细信息的步骤吗?
我们是否需要使用Spring cloud OAuth2安全使用JWT来保护所有的微服务边缘点,或者我们可以只保护一个web微服务?我需要任何权限,特定的用户角色来实现这个吗?
你可以在这里找到Azure关于OAuth 2.0支持AAD的文档
https://learn.microsoft.com/en-us/azure/active-directory/active-directory-protocols-oauth-code我有一个使用OAuth 2.0与不同的认证服务器的应用程序,我要看看我是否可以使用AAD作为认证服务器。但是,无论您的认证服务器最终是什么,应用程序的其余部分都应该是相同的…
- 认证服务器处理登录(通常作为单点登录模式)
- 授权服务器将返回一个Json Web令牌(在某些时候,取决于用于检索它的授权类型)
- JWT应包含在每个后续请求中,以确保调用方具有授权
从Spring的角度来看,您至少需要一个SSO客户机(由@EnableOAuthSSO注释表示)。如果所有内容都由该进程托管,则需要该JWT调用后续方法。如果您的进程托管在其他进程中,那么您很可能希望它们也受到保护。使用@EnableResourceServer注释将配置Spring Security来查找JWT,如果请求没有JWT,则不尝试检索JWT。
除非端点是公开可访问的,否则您将希望保护它。当然,我真的不知道你的应用程序的上下文,所以这个说法纯粹是一个不知情的意见,基于你试图用你的应用程序做什么。珍惜它的价值吧。
编辑这比我原来想的要复杂一点。我已经能够编写一些代码来动态地从Microsoft检索公钥,以便验证返回的JWT。
但是,主要问题是Azure AD在作为身份/身份验证服务器时支持Open Id Connect。而且,目前spring-security-oauth2不支持Open Id Connect。
我能够对spring代码做一些小的改变,但是我确实向spring小组提出了这个问题,他们正在积极地工作,增加对Open Id Connect的支持。他们希望能在两个月左右发布。
短期内,oauth2支持不支持Open Id Connect。鉴于这是AAD使用的协议,当前版本的oauth2将无法与AAD一起工作。也就是说,我很乐意等待官方的支持,这应该不会太久。