gpt4 book ai didi

spring - 如果用户之前已授权访问,如何绕过 Spring security OAuth2 中的访问确认步骤?

转载 作者:行者123 更新时间:2023-12-02 07:12:26 24 4
gpt4 key购买 nike

我目前正在尝试绕过 Spring Security OAuth2 中访问授权流程的批准/拒绝步骤,因为应记住先前授权的访问(针对特定的 client_id 和 user_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>

所以我有一个 AccessConfirmationController,它具有/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);
}

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

现在我知道我必须检查(在此方法中的某个位置)当前经过身份验证的用户(主体)之前是否已批准访问,如果是这样,我们应该检索与用户相关的 token ,也许只需通过以下方式向他发送 token redirect_uri

Spring Security 中有一个允许 token 检索的内部端点:

    @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
}
}

如何从我的 Controller 中调用此框架端点?这是否是最好的方法(~最佳实践?)?

提前致谢,

最佳答案

您只需在配置中设置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 - 如果用户之前已授权访问,如何绕过 Spring security OAuth2 中的访问确认步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29964992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com