AWS и Cognito - PullRequest
       49

AWS и Cognito

0 голосов
/ 09 октября 2018

Я новичок в этом деле, поэтому скачал примеры, и все в порядке, и я подумал, что могу видеть, что происходит и что мне нужно было сделать.Тем не менее, я немного застрял без видимой причины, поэтому я подумал, может кто-нибудь дать мне несколько советов.

Я пытаюсь встроить аутентификацию и идентификацию Cognito в старое устаревшее веб-приложение Apache Struts 1, написанное на Java.Таким образом, все действия должны быть на стороне сервера.Используя URL Cognito https://xxx.auth.xxx.amazoncognito.com/login?, я могу успешно пройти аутентификацию и получить код авторизации, используя этот URL, предоставляя мой идентификатор клиента, URI перенаправления и код response_type =, так что пока все хорошо.

Если я затем создаю 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  

(это был / логин успешно)

Callback from Cognito received 

(далее вызывается дамп журнала URI / oauth2 / token)

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».

Я также попытался использовать URI / oauth2 / token непосредственно из приложения Struts для предоставления токена, но он возвращаетid_token с использованием #, а не?в списке параметров, так что это только на стороне клиента и, следовательно, не может быть перехвачено приложением Struts, поэтому будет затруднительно пересылать его на сервер, но я мог бы написать Javascript, чтобы сделать это, если бы мне пришлось.Однако это не путь наименьшего сопротивления, так как кажется неправильным, что вызов на чистом Java-сервере не работает, поэтому я, должно быть, делаю что-то не так, что для меня не очевидно.

...