3

Apache Oltu で OAuthClientRequest を使用して OAuth クライアントを実装しようとしました。そして、仕様によると、Basic Authヘッダーではなくメッセージ本文でクライアント資格情報を送信しているようです。よくわかりませんが、コードの一部を見逃している可能性があります。

コード

OAuthClientRequest.tokenLocation("http://localhost:8081/token")
                .setGrantType(GrantType.CLIENT_CREDENTIALS)
                .setClientId(clientKey)
                .setClientSecret(clientSecret)
                .buildBodyMessage();

リクエスト

POST /token HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache プラグマ: no-cache User-Agent: Java/1.6.0_29 Host: 127.0.0.1:8081 Accept: text /html、画像/gif、画像/jpeg、*; q=.2, / ; q=.2 接続: キープアライブ Content-Length: 127

client_secret=f921854d-f70b-4180-9fdd-3a55032103cc&grant_type=client_credentials&client_id=3f3b4092-7576-4b26-8135-980db7864c2

4

3 に答える 3

1

OAuth2 ベアラー トークン仕様では、ベアラー アクセス トークンを送信する 3 つの方法が定義されています。

  • 承認リクエスト ヘッダー フィールド
  • フォーム エンコードされた本文パラメーター
  • URI クエリ パラメータ

このメソッドbuildBodyMessage()は、フォーム エンコードされた本文パラメーターを使用してリクエストを作成します。buildHeaderMessage()代わりに使用する必要があります。これは、仕様で推奨されている方法でもあります。

于 2013-12-30T14:36:46.403 に答える
0

最近、「client_credential」タイプのアクセストークンを取得するための OAuth2 Java ライブラリを見つけようとしています。以下はApache Oltu用に私が持っているもので、動作しているようです。

@Test
public void getAccessTokenViaApacheOltuOAuthClient() {
try{

    OAuthClient client = new OAuthClient(new URLConnectionClient());

    OAuthClientRequest request =
            OAuthClientRequest.tokenLocation(TOKEN_REQUEST_URL)
                    .setGrantType(GrantType.CLIENT_CREDENTIALS)
                    .setClientId(CLIENT_ID)
                    .setClientSecret(CLIENT_SECRET)
                    .setScope(StringUtils.join(TEST_SCOPES, " ")) //if you have scope
                    .buildBodyMessage();

    String token =
            client.accessToken(request, "POST", OAuthJSONAccessTokenResponse.class)
                    .getAccessToken();

    System.out.println(token);
    assertTrue( token != null);

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

}

于 2017-03-07T20:26:48.540 に答える