我是这个东西的新手,所以下载了所有样本,一切都很好,我以为我可以了解正在发生的事情和需要做的事情。但是,由于没有明显的原因而被卡住了,所以我想知道是否有人可以给我一些提示。
我正在尝试将Cognito身份验证和身份设计到用Java编写的旧Apache Struts 1旧版Web应用程序中,因此所有活动都需要在服务器端进行。使用Cognito https://xxx.auth.xxx.amazoncognito.com/login? URL我可以成功地使用该URL进行身份验证并获得auth代码,从而提供我的客户端ID,重定向URI和response_type = code到目前为止一切正常。
如果然后我创建一个HttpClient(按照Github中的示例代码)并调用令牌URL https://xxx.auth.xxx.amazoncognito.com/oauth2/token并将各种参数写入请求正文(grant_type = authorization_code,client_id =与以前一样,redirect_uri =我的URI)并且代码=验证码刚刚返回),我收到一条“ unauthorized_client”消息。但是该代码虽然可以授权,但仍然有效,并且client_id是正确的,因为我以前使用过它。
我的日志:
Cognito following successful signin, continuing to url http:[redacted]/passport/CognitoHandlerSignIn.do?code=62eeb0b1-a76b-489b-bd28-e42023a497bd
(这是/ login的后继)
Callback from Cognito received
(以下是/ oauth2 / token URI的日志转储)
Cognito token signin URL is https:[redacted].amazoncognito.com/oauth2/token
HTTP request header, added Authorization=Basic M29wcGR0azdpYzF2YjloNGd0OTQzNXYxcmI6MW9mMmFsaWNzZGR2dHZ1NmFkOHRuc2s4cnJ0cXEyYm0yc3RqbG1mcmkyamhkdXBubG1wMw==
HTTP request header, added Content-Type=application/x-www-form-urlencoded
HTTP request body, added grant_type=authorization_code
HTTP request body, added
redirect_uri=https%3A%2F%2F<redacted>%2Fpassport%2FCognitoHandlerSignIn.do
HTTP request body, added code=62eeb0b1-a76b-489b-bd28-e42023a497bd
HTTP request body, added client_id=[redacted]
HTTP request is sun.net.www.protocol.https.DelegateHttpsURLConnection:https:
[redacted].auth.eu-west-1.amazoncognito.com/oauth2/token
HTTP Json result=<{"error":"unauthorized_client"}>
org.json.JSONException: JSONObject not found.
at org.json.JSONObject.get(JSONObject.java:454)
at
这张图片怎么了?我还尝试添加client_id,代码作为URL参数,但是我只是收到一条“ invalid_client”消息。
我还尝试直接从Struts应用程序使用/ oauth2 / token URI提供令牌,但是它使用#而不是使用?返回id_token。在参数列表中,因此它仅是客户端的,因此Struts应用程序无法拦截它,因此转发到服务器将很痛苦,但是如果需要的话,我可以编写一些Javascript来实现。但是,这似乎并不是阻力最小的路径,因为纯Java服务器端调用不起作用似乎是错误的,所以我必须做对我不明显的错误。