如何解决OAuth 2.0访问令牌和客户端证书
因此,我目前正在开发一个Spring Boot MS,该MS需要连接到已实现OAuth 2.0的外部API。
API商店使用授予类型的自定义版本,称为客户证书。
此授予类型使用相互SSL和应用程序级别凭据的组合。
它需要两个身份因素:
- 身份因素1 –相互SSL:由我创建的由API商店所有者签名的证书
- 身份因子2 –应用程序级别凭证:{consumerKey:consumerSecret}
获取此令牌的curl命令为:
// Validate mandatory "Order notes" field for "Parcel pickup point" shipping methods
add_action( 'woocommerce_checkout_process','flat_rate_order_comment_validation',20 );
function flat_rate_order_comment_validation() {
$chosen_shipping = WC()->session->get( 'chosen_shipping_methods' )[0];
$chosen_shipping = explode(':',$chosen_shipping);
if ( $chosen_shipping[0] == 'flat_rate:47' && empty($_POST['order_comments']) ){
wc_add_notice( __( "You need to fill up \"Order notes\" with some details.","woocommerce" ),'error' );
}
}
如何将其转换为Spring引导应用程序?
我目前已经编写了这段代码,但是我认为我还差得远。
curl -k -d "grant_type=client_cert" --basic -u "{consumer key}:{consumer secret}" -H "Content-Type: application/x-www-form-urlencoded" --cert {Certificate Pem} https://api.examplestore.com/token
欢迎任何帮助。谢谢:)
解决方法
我认为你离那儿不远了。
您绝对需要包括身体:
HttpEntity<String> request = new HttpEntity<String>("grant_type=client_cert",headers);
还需要包括证书,也许像这样:
SSLContext sslContext = SSLContextBuilder.create()
.loadTrustMaterial(new URL("/path/to/your/cert"),"certpassword".toCharArray())
.setProtocol("yourProtocol")
.build();
final HttpClient httpClient = HttpClientBuilder.create()
.setSSLContext(sslContext)
.build();
final ClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。