2017-02-01 8 views
1

でのOAuth2 POSTリクエストのために体にパラメータを置くことができません。は、私がここに非常に基本的な何かが欠けてい思わRESTサービス

私はこのようになりますよう、ApacheのOltuのOAuth2サービスを使用してトークンを生成するためのPOSTリクエストを受け取りREST APIを作っ:

@POST 
@Consumes("application/x-www-form-urlencoded") 
@Produces("application/json") 
public Response authorize(@Context HttpServletRequest request) throws OAuthSystemException, IOException { 
    try { 
     OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request); 
     OAuthIssuer oauthIssuerImpl = new OAuthIssuerImpl(new MD5Generator()); 

私はサービスをテストするためにHttpRequesterやポストマンを使用する場合、それは完璧に動作しますその任意のPOSTリクエストのために、すべてのパラメータ

https://localhost:8443/rest/OAuthService/token?grant_type=password&username=userfortest&password=Johhny1é&client_id=1234 

私が読んしかし必要があります。条件そのI入力すべての認証および入力パラメータとしてのOAuth2パラメータ、例として上の罰金は、HTTPリクエストのボディに ことと、単純なパラメータとしてURLを経由送信されることはありません。私は安全な要求を行うように、HTTPリクエストのボディにそれを渡すようにしようとすると、それから何も受信しないように思える、(そのURLをパラメータとすべてのparams体内に指定されていない同じです)それが例外をスローするように、本体には、次のようなメッセージを持つ

OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request); 
後:

{"error_description":"Missing grant_type parameter value","error":"invalid_request"} 

は、それは、URLを通過するパラメータのためのOltu /のOAuth2の意図された動作ですか?または私は何を間違っているのですか?

ありがとうございます。

答えて

2

あなたの答えはここにある:Unable to retrive post data using ,@Context HttpServletRequest when passed to OAuthTokenRequest using Oltu

私は彼が言った正確に何をした、それは完全に働きました。

あなたは応答AUTHORIZE()パラメータを変更する必要があります。

+0

おかげで、それは正しいです!私はOAuthTokenRequestに渡すために手動でURLパラメータにリクエストから受け取ったボディパラメータを変換することで回避策を見つけましたが、答えのソリューションはより効率的で実装が簡単です。 – WhileTrueContinue

関連する問題