因此,我目前正在开发一个Spring Boot MS,该MS需要连接到已实现OAuth 2.0的外部API。
API商店使用授予类型的自定义版本,称为客户证书。
此授予类型使用相互SSL和应用程序级别凭据的组合。
它需要两个身份因素:
获取此令牌的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
欢迎任何帮助。谢谢:)
答案 0 :(得分:1)
我认为你离那儿不远了。
您绝对需要包括身体:
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);
...