gpt4 book ai didi

java - 使用 Spring Rest 模板使用 Oauth2(授权码)rest api

转载 作者:行者123 更新时间:2023-11-30 02:16:07 25 4
gpt4 key购买 nike

我正在尝试在 Spring 集成项目中使用 REST Web 服务。该 Web 服务通过 oauth2(授权代码)进行保护。知道如何实现这一点吗?

我尝试使用 OAuth2RestTemplate 但它给了我一个错误:org.springframework.security.oauth2.client.resource.UserRedirectRequiredException:需要重定向才能获得用户批准

下面是我的代码。

import java.util.Arrays;

import org.springframework.security.oauth2.client.token.AccessTokenRequest;
import org.springframework.security.oauth2.client.token.DefaultAccessTokenRequest;
import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider;
import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeResourceDetails;

public class OAuth2Client1 {

public static void main(String[] args) {

AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
resource.setId("My Developer");
resource.setClientId("xxxxxx");
resource.setClientSecret("xxxxxx");
resource.setAccessTokenUri("https://api.infusionsoft.com/token");
resource.setUserAuthorizationUri("https://signin.infusionsoft.com/app/oauth/authorize");
resource.setPreEstablishedRedirectUri("https://myapps.com:8181/my_work");
resource.setScope(Arrays.asList("full"));
try {
AuthorizationCodeAccessTokenProvider authProvider =
new AuthorizationCodeAccessTokenProvider();
AccessTokenRequest request = new DefaultAccessTokenRequest();
String str = authProvider.obtainAuthorizationCode(resource, request);
System.out.println(str);

} catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

授权代码流用于通过重定向在 Web 浏览器中对用户进行身份验证。它需要通过用户名和密码进行用户身份验证。

您的案例是关于两个服务之间的通信,也称为 M2M(机器对机器)。出于安全原因,服务不允许自行存储用户凭据。您应该使用仅需要客户端 ID 和客户端 key 进行身份验证的客户端凭据流程。这样您就可以使用 OAuth2RestTemplate。

关于java - 使用 Spring Rest 模板使用 Oauth2(授权码)rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358028/

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