【发布时间】:2019-03-24 19:05:57
【问题描述】:
我正在使用 Okta 使用 Oauth2 编写应用程序,但遇到了问题:
我想做的是让 Okta(或其他方法)自动设置并提供我的用户的授权详细信息。我已经让 Okta 能够支持用户的身份验证,我正在专门寻求有关授权的帮助。特别是,我想做的是将我的 API 的授权分为 3 个部分:
1) 任何用户都可以使用的一组 API,即使是未经身份验证的用户。
2) 一组仅对经过身份验证的用户可用的 API。
3) 在基于权限(授权)的要求下被锁定的一组 API。
这是我遇到问题的第三组。我的安全上下文设置如下:
@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends OAuth2SsoDefaultConfiguration {
public SecurityConfig(ApplicationContext applicationContext) {
super(applicationContext);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/anyaccess/**").permitAll()
.antMatchers("/credential/**").hasRole("ADMIN");
super.configure(http);
http.logout().logoutSuccessUrl("/");
}
}
因此,任何人都可以访问 /anyaccess,任何经过身份验证的用户都可以访问除 /credential 之外的任何其他内容。
当我通过 Okta 登录到我的应用程序时,我得到一个 Authentication 和 Principal 对象,它似乎是在某个地方自动生成的,不知何故(它在某个地方,不知何故,我主要是在寻找澄清)。但是,这些对象没有任何设置权限,它们似乎也没有提供一种为未来请求添加额外权限的方法。我该怎么做:
1) 设置这些 Authentication 和 Principal 对象以包含我想要的每个用户的权限?
2) 确保这些是在用户通过 Okta 登录时自动设置的,并且不需要额外的 API 调用?
3) 持续更改此配置并将其作为我的应用程序授权服务的一部分?
4) 有什么方法可以通过 Okta 配置来管理它,或者我需要设置一个单独的服务来管理它并将其添加到我的 Okta 身份验证服务中?
谢谢。
【问题讨论】:
标签: authorization spring-security-oauth2 okta