如果用户之前已经授权访问,如何绕过Spring安全OAuth2中的访问确认步骤? [英] How to bypass access confirmation step in Spring security OAuth2 if user has previously authorized access?

查看:39
本文介绍了如果用户之前已经授权访问,如何绕过Spring安全OAuth2中的访问确认步骤?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在尝试绕过Spring Security OAuth2中访问授权流程的批准/拒绝步骤,因为应该记录先前授权的访问(针对特定的客户端id和用户id),并允许将OAuth-app重定向到客户端应用程序,而无需每次都询问用户是否批准。

    <version.spring-security>3.2.0.RELEASE</version.spring-security>
    <version.spring-security-oauth>1.0.5.RELEASE</version.spring-security-oauth>

因此我有一个AccessConformationController,它具有/OAuth/Confirm_Access终结点的映射:

    @RequestMapping("/oauth/confirm_access")
    public ModelAndView getAccessConfirmation(@ModelAttribute final AuthorizationRequest clientAuth)
    {
        final ClientDetails client = this.clientDetailsService.loadClientByClientId(clientAuth.getClientId());
        final TreeMap<String, Object> model = Maps.newTreeMap();
        model.put("auth_request", clientAuth);
        model.put("client", client);
        return new ModelAndView("access_confirmation", model);
    }

非常经典的访问确认处理方式。

现在我知道我必须检查(在此方法中的某个地方)当前经过身份验证的用户(主体)以前是否批准了访问,如果是,我们应该只检索与用户关联的令牌,并可能只通过reDirect_uri向他发送令牌。

Spring Security中有一个允许令牌检索的内部终结点:

    @FrameworkEndpoint
    @RequestMapping(value = "/oauth/token")
    public class TokenEndpoint extends AbstractEndpoint {

        @RequestMapping
        public ResponseEntity<OAuth2AccessToken> getAccessToken(Principal principal,
                @RequestParam(value = "grant_type", required = false) String grantType,
                @RequestParam Map<String, String> parameters) {
       // the logic here
        }
    }
如何从我的控制器中调用此框架终结点?这是最好的方法吗(~最佳实践?)做这件事?

提前谢谢,

推荐答案

您只需在配置中设置AutoAprove=True

@Configuration
@EnableAuthorizationServer
public class OAuth2Config extends AuthorizationServerConfigurerAdapter {
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
                .withClient("my-client")
                        .secret("secret")
                        .authorizedGrantTypes("authorization_code")
                        .autoApprove(true)
                .scopes("scope");
    }
}

这篇关于如果用户之前已经授权访问,如何绕过Spring安全OAuth2中的访问确认步骤?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆