首页 文章

OAuth2(Okta):如何设置授权

提问于
浏览
0

我正在使用Oka编写一个使用Oauth2的应用程序,我遇到了一个问题:

我想做的是让Okta(或其他方法)自动设置并提供我的用户的 authorization 详细信息 . 我已经让Okta能够支持 authentication 的用户,我特意寻找有关 authorization 的帮助 . 特别是,我想要做的是将我的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身份验证服务中?

谢谢 .

1 回答

  • 1

    您可以将用户组添加到“组”声明中,Okta Spring Boot启动程序会自动将这些组转换为Spring Security权限 .

    从顶部菜单中,转到 API 并单击 Authorization Servers .

    单击 default 授权服务器 .

    单击 Claims 选项卡 .

    单击 Add Claim 按钮 .

    更新弹出窗体以匹配下面的图像 .

    请注意,Filter Regex是 . * .

    enter image description here

    然后你可以在你的方法上使用 @PreAuthorize("role_name") .

    This blog post有更多信息 .

相关问题