首页 > 其他分享 >oauth2请求参数修改

oauth2请求参数修改

时间:2023-06-04 20:13:50浏览次数:40  
标签:oauth2 请求 parameters request DefaultOAuth2AuthorizedClientProvider authorizedCli

如果您需要修改OAuth2请求中的参数名称,您需要配置一个 OAuth2AuthorizedClientProvider bean。您可以使用 DefaultOAuth2AuthorizedClientProvider 类作为基础,并在其上修改所需的参数名称。例如,以下代码片段将 authorizationCode 的参数名称更改为 custom_code

@Configuration
@EnableOAuth2Client
public class OAuth2Configuration {

    @Bean
    public OAuth2AuthorizedClientManager authorizedClientManager(
            ClientRegistrationRepository clientRegistrationRepository,
            OAuth2AuthorizedClientRepository authorizedClientRepository) {

        DefaultOAuth2AuthorizedClientManager authorizedClientManager =
                new DefaultOAuth2AuthorizedClientManager(
                        clientRegistrationRepository, authorizedClientRepository);

        DefaultOAuth2AuthorizedClientProvider authorizedClientProvider =
                new DefaultOAuth2AuthorizedClientProvider();

        authorizedClientProvider.setAuthorizationCodeTokenResponseClient(
                new OAuth2AuthorizationCodeGrantRequestEntityConverter() {
                    @Override
                    public RequestEntity<?> convert(OAuth2AuthorizationCodeGrantRequest request) {
                        HttpHeaders headers = new HttpHeaders();
                        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
                        MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
                        parameters.add("client_id", request.getClientId());
                        parameters.add("custom_code", request.getAuthorizationCode());
                        ...
                        // 添加其它参数
                        ...
                        return new RequestEntity<>(parameters, headers, HttpMethod.POST, request.getAccessTokenUri());
                    }
                });

        authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);

        return authorizedClientManager;
    }
}

 

这个例子使用 DefaultOAuth2AuthorizedClientProviderDefaultOAuth2AuthorizedClientManager 类。然后,它使用匿名内部类重写了 OAuth2AuthorizationCodeGrantRequestEntityConverter 类。在 convert() 方法中,我们可以设置任何要发送到授权服务器的参数,包括更改 authorizationCode 参数的名称为 custom_code

标签:oauth2,请求,parameters,request,DefaultOAuth2AuthorizedClientProvider,authorizedCli
From: https://www.cnblogs.com/beilong/p/17456199.html

相关文章

  • Java中用于发送HTTP请求的工具类
     HttpClientUtil是Java中用于发送HTTP请求的工具类,它是基于ApacheHttpClient实现的。下面是一个示例代码:importorg.apache.http.HttpEntity;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;import......
  • Java中用于发送HTTP请求的工具类
     HttpClientUtil是Java中用于发送HTTP请求的工具类,它是基于ApacheHttpClient实现的。下面是一个示例代码:importorg.apache.http.HttpEntity;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;import......
  • Java中用于发送HTTP请求的工具类
    ​ HttpClientUtil是Java中用于发送HTTP请求的工具类,它是基于ApacheHttpClient实现的。下面是一个示例代码:importorg.apache.http.HttpEntity;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;......
  • Java中用于发送HTTP请求的工具类
    ​ HttpClientUtil是Java中用于发送HTTP请求的工具类,它是基于ApacheHttpClient实现的。下面是一个示例代码:importorg.apache.http.HttpEntity;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;......
  • 5. Mybatis获取参数值的两种方式
    ‍MyBatis获取参数值的两种方式:​${}和#{}​${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时......
  • spring mvc 请求转发和重定向
    1.需求背景需求:springMVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不是我想......
  • java 判断请求来自手机或电脑
    [color=red]java判断android、iphone等手机浏览器[/color][url]http://www.aiisen.com/java-judge-is-moblie-zh.html[/url],这个也值得参考[color=red]Java/JavaScript两种方式判断浏览器是否是移动端浏览器packagecom.zhuzher.commons.util;import......
  • 在Web里面用Jasper导出Pdf、HTML、Excel,以及参数说明
    参考:[color=red]ireport导出各种格式(pdf,excel,word,html,print)的例子[/color]:[url]http://mingxiao2010.blog.163.com/blog/static/861904812010665366872/[/url]说明:PDF:JRAbstractExporterexporter=newJRPdfExporter();Excel:JRAbstractExpor......
  • Oracle统计信息之NO_INVALIDATE参数
    文档课题:Oracle统计信息之NO_INVALIDATE参数.1、理论知识Oracle统计信息对于CBO至关重要.RBO建立在数据结构的基础上,DDL结构、约束会将SQL语句分为不同的成本结构等级.而CBO是在数据结构的基础上加入数据表细粒度信息,将成本结构细化为成本cost值.相对于数据表的DDL结构,统计信息反......
  • flutter 使用 http 请求数据
    flutter虽然有原生的HttpClient,package:http对开发会更友好,这是官方推荐的网络请求模块。安装httppackagefluterpubaddhttp在android文件夹下的AndroidManifest.xml文件,添加网络权限,<uses-permissionandroid:name="android.permission.INTERNET"/>构造URI因为ht......