https://docs . Microsoft . com/en-us/Azure/developer/Java/spring-framework/configure-Spring-boot-starter-Java-app-with-Azure-Active-Directory上的教程解释了如何在Microsoft Azure Active Directory上设置带有身份验证的Spring Security。
不考虑两个小差异(这里解释了OpenID连接登录Office 365和spring security ),这工作得很好。
在我的申请中。属性有一个属性:
azure.activedirectory.active-directory-groups=myADUserGroup
(提示:azure . activedirectory . active-directory-groups似乎是较新的azure . activedirectory . user-group . allowed-groups的过时版本...)
我不想限制特定的群体。对于我的用例,每个拥有有效Microsoft帐户的用户都可以。将属性留空甚至删除属性会导致以下异常:
Caused by: java.lang.IllegalStateException: One of the User Group Properties must be populated. Please populate azure.activedirectory.user-group.allowed-groups
at com.microsoft.azure.spring.autoconfigure.aad.AADAuthenticationProperties.validateUserGroupProperties(AADAuthenticationProperties.java:148) ~[azure-spring-boot-2.3.1.jar:na]
一种可能的解决方法是在application.properties中为属性输入某个任意的组名:
azure.activedirectory.active-directory-groups=some-arbitrary-group-name-doesnt-matter
并且只是不要使用@PreAuthoriza("hasRole('[组/角色名称]')")
。
这是有效的(只要您的应用程序对角色名称不感兴趣),但感觉不正确。a)是否有“正确”的方法来设置通配符active-目录-组?b)org.springframework.security.core.Authentication.getAuthorities()似乎只提供在该属性中输入的组名/角色名,因此解决方法不提供任何(但ROLE_USER)。我想在用户处读取所有组/角色。所以我问第二个问题:如何在不知道所有角色的情况下从org.springframework.security.core.Authentication.getAuthorities()获取所有角色,尤其是在不将所有角色输入“azure.activedirectory.active-目录-组”属性的情况下?
由于目前不支持组的通配符,我通过忽略用户组是否有效来构建解决方法。
为此,我做了一个com.microsoft.azure.spring.autoconfigure.aad.AzureADGraphClient的副本,并注释掉了这个代码片段:
.filter(this::isValidUserGroupToGrantAuthority)
我做了一份2UserServicecom.microsoft.azure.spring.autoconfigure.aad.AADOAuth
graphClient = new MyAzureADGraphClient(...
而不是
graphClient = new AzureADGraphClient(...
在安全配置中,我注入了AAD属性:
@Autowired(required = false) private AADAuthenticationProperties aadAuthenticationProperties;
@Autowired(required = false) private ServiceEndpointsProperties serviceEndpointsProps;
并调用了我自己的AADOAuth2UserService在空配置(HttpSecurity超文本传输协议):
EvaAADOAuth2UserService oidcUserService = new EvaAADOAuth2UserService(aadAuthenticationProperties, serviceEndpointsProps);
httpSecurity.oauth2Login().loginPage(LOGIN_URL).permitAll().userInfoEndpoint().oidcUserService(oidcUserService);
它不是组通配符,但如果无状态处理适合您的需要,
azure.activedirectory.active-directory-groups=...
可替换为:
azure.activedirectory.session-stateless=true
这将激活AADAppRoleStatelessAuthenticationFilter
而不是AADAuthenticationFilter
,后者不需要通过azure.activedirectory.active-目录-组
指定组。您要使用的角色必须在应用程序清单中声明
目前,它不支持为azure active directory组设置通配符。
你可以为 Azure 广告反馈提供语音,如果其他人有相同的需求,则会投票支持你。许多投票将促进此功能的实现。
我正在通过以下URL为功能应用程序执行azure active directory身份验证https://www.c-sharpcorner.com/article/secure-azure-function-with-azure-ad/ 但是,当我通过功能应用程序点击我的url时,它会给我未经授权的权限,我还需要做其他事情吗 请查看以下屏幕截图。 非常感谢您的帮助
我在这里有很多问题要解决。一直试图将上述3项技术集成到我们的WebApp中…我们要使用 null web.xml: 我的servlet-context.xml: My manager-context.xml: 编辑2 我认为主要的问题是SpringSecurity需要webapp上下文(ContextLoaderListener)才能工作,但web应用程序是在servlet上下文中运行的。控制器方
我正在尝试在此YouTube视频之后在Azure上设置PnP合作伙伴包。由于我的试用版 Azure 存储订阅已过期,我正在尝试使用我公司的 Azure 存储,但其 Azure 帐户未连接到 Office 365 租户。因此,我创建了一个试用版 Office 365 帐户,现在我正在尝试将 Office 365 连接到 Azure 存储。 这些不在同一账户下。有人能帮我设置一下吗? 编辑1假设您调用
本文向大家介绍SpringBoot 配合 SpringSecurity 实现自动登录功能的代码,包括了SpringBoot 配合 SpringSecurity 实现自动登录功能的代码的使用技巧和注意事项,需要的朋友参考一下 自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱: 很多网站我们在登录的时候都会看到类似的选项,毕竟总让用户输入用户名密码是一件很麻烦的事。 自动登录功能
问题内容: 和MySQL中的通配符有什么区别? 在这样的查询中: 问题答案: 只能在全文搜索中用作通配符(或截断),而(匹配0个或更多字符)和(恰好匹配一个字符)仅适用于LIKE查询。
我正在为Dart寻找一个好的ldap库,用于连接Microsoft Active Directory。我找到了dartdap,但我似乎无法让它工作。我百分之百相信我的CN和密码是正确的,因为我可以连接到Active directory,例如使用lpap浏览器。 我得到的错误是:未捕获错误:无效凭据(49)msg=80090308:ldaper:DSID-0C0903A9,注释:AcceptSecu