gpt4 book ai didi

接收请求并生成 Oauth 签名的 Java 方法

转载 作者:行者123 更新时间:2023-11-29 05:18:33 24 4
gpt4 key购买 nike

我想编写一个 java 方法,它将接收包含授权 header 的请求,并使用 HMAC-SHA1 生成 Oauth 签名并将其作为响应发送。我想知道如何实现它?

我希望该方法应该从请求中获取签名基础字符串并使用算法生成签名。如果我错了或者是否有任何其他方法可以获得类似的输出,请纠正我。

最佳答案

这个问题在某些方面是不正确的,因为“授权 header ”里面会有签名。如果您想验证 oauth 请求,那么您将首先验证消费者 key ,然后使用所有其他字段和将存储在您端的 secret 生成签名,并根据“授权 header ”中的签名对其进行验证。

但是,如果您想签署请求,那么有许多开源库可以做到这一点。我正在使用 Jersey 的“oauth signature”库来签署请求。

public static String getOAuthHeader(final String url, final String method,
final String realm, final String consumerSecret,
final String consumerKey, final String callback,
final String verifier, final String token,
final String tokenSecret, final String host) {

String oauthHeader = null;
OAuthSecrets secrets = new OAuthSecrets()
.consumerSecret(consumerSecret);
OAuthParameters authParams = new OAuthParameters()
.consumerKey(consumerKey).signatureMethod(HMAC_SHA1.NAME)
.version(AuthenticationConstants.OAUTH_VERSION_10A)
.realm(realm).nonce().timestamp();

if (callback != null) {
authParams = authParams.callback(callback);
}

if (verifier != null) {
authParams = authParams.verifier(verifier);
}

if (token != null) {
authParams = authParams.token(token);
}

if (tokenSecret != null) {
secrets = secrets.tokenSecret(tokenSecret);
}

final OAuthRequestData request = new OAuthRequestData();
request.setRequestMethod(method);
request.setRequestURL(url);
request.addHeaderValue(AuthenticationConstants.HOST_HEADER, host);

try {

OAuthSignature.sign(request, authParams, secrets);

final List<String> header = request
.getHeaderValues(OAuthParameters.AUTHORIZATION_HEADER);
oauthHeader = header.get(0);
} catch (final OAuthSignatureException oae) {
//handle this exception
}

return oauthHeader;
}

关于接收请求并生成 Oauth 签名的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662099/

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