Когда дело доходит до вашего федеративного пула удостоверений, вы действительно можете обращаться со всеми токенами одинаково. Вам нужно только изменить [authenticator]
на карте входа в систему.
Предположительно, код, который вызывает вашу функцию getAwsCredentials
, должен знать, откуда взялся токен, и может передать параметр, как вы делаете выше.
Я хотел упомянуть, что я не думаю, что это обязательно ужасный подход. Я мог бы передать значение [authenticator]
напрямую вместо type
, но это относительно незначительная вещь. Моя главная мысль заключается в том, что может быть, оставить ответственность за знание того, откуда взялся токен, с вызывающим кодом, а не с вашей вызываемой функцией.
Определение поставщика удостоверений с помощью токена
Есть, конечно, одинаково допустимые подходы, которые могут захотеть или должны вытащить поставщика удостоверений из самого токена.
Когда вы напрямую интегрируетесь с Google, вы получаете токен от Google, который затем передаете в Cognito ( как в вашем коде выше). Если вы расшифруете жетон, вы найдете
"iss": "accounts.google.com",
где-то там.
Точно так же, когда вы интегрируетесь напрямую с вашим пулом пользователей, токен, который вы получаете из своего пула пользователей (который вы позже предоставляете пулу удостоверений), содержит что-то вроде:
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx",
Таким образом, вы можете узнать, как пользователь вошел в систему, проверив его токен.
Примечание о размещенном на Cognito пользовательском интерфейсе
Если вы используете размещенный пользовательский интерфейс Cognito для входа в Google, вы получите access_token
и id_token
от Cognito (через перенаправление). В этом случае все токены поступают из одного и того же места (Cognito), а это означает, что вы не можете полагаться на какой-либо вызывающий код, чтобы узнать, кто является настоящим поставщиком удостоверений. .
В этом случае вам нужно взломать токены, если вашему приложению важно, кто такой IDP. Эта часть id_token
- это то, что вам, вероятно, нужно:
"identities": [
{
"userId": "100000000000000000000",
"providerName": "Google",
"providerType": "Google",
"issuer": null,
"primary": "true",
"dateCreated": "1507749926267"
}
],
"token_use": "id",
"auth_time": 1509303233,
"name": "Your User",
"exp": 1509306833,
"iat": 1509303233,
"email": "[email protected]"
person
Mike Patrick
schedule
29.10.2017
userToken
от Google? Или вы получаете токен Google, который не нравится Cognito? Безопасно ли предположить, что у вас уже настроен пул федеративных удостоверений в дополнение к вашему пулу пользователей? - person Mike Patrick   schedule 24.10.2017