での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の意図された動作ですか?または私は何を間違っているのですか?
ありがとうございます。
おかげで、それは正しいです!私はOAuthTokenRequestに渡すために手動でURLパラメータにリクエストから受け取ったボディパラメータを変換することで回避策を見つけましたが、答えのソリューションはより効率的で実装が簡単です。 – WhileTrueContinue