Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
OpenID Connect
Adición de un proveedor OpenID Connect
Para obtener más información acerca de cómo crear un proveedor de OpenID Connect, consulte Creación de proveedores de identidades de OpenID Connect (OIDC) en la Guía del usuario de AWS Identity and Access Management.
Asociación de un proveedor con Amazon Cognito
Para agregar un proveedor de identidades (IdP) de OIDC
-
Elija Grupos de identidades en la consola de Amazon Cognito
. Seleccione un grupo de identidades. -
Elija la pestaña Acceso de usuario.
-
Seleccione Agregar proveedor de identidades.
-
Elija OpenID Connect (OIDC).
-
Elija un proveedor de identidades de OIDC entre los IdP de IAM que tiene la Cuenta de AWS. Si desea agregar un nuevo proveedor de SAML, elija Crear nuevo proveedor para navegar hasta la consola de IAM.
-
Para establecer el rol que Amazon Cognito solicita cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Configuración del rol.
-
Puede asignar a los usuarios de ese IdP el Rol predeterminado que configuró al configurar el Rol autenticado o puede Elegir el rol con reglas.
-
Si eligió Elegir rol con reglas, ingrese la Reclamación de origen de la autenticación del usuario, el Operador con el que desea comparar la afirmación, el Valor que hará que coincida con esta elección de rol y el Rol que desea asignar cuando la Asignación del rol coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.
-
Elija una Resolución de rol. Cuando las reclamaciones del usuario no coinciden con las reglas, puede denegar las credenciales o emitir credenciales para el Rol autenticado.
-
-
-
Para cambiar las etiquetas de la entidad principal que Amazon Cognito asigna cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Atributos para el control de acceso.
-
Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.
-
Para aplicar etiquetas de entidades principales en función de las reclamaciones
sub
yaud
, elija Usar mapeos predeterminados. -
Para crear su propio esquema personalizado de atributos para las etiquetas de la entidades principales, elija Usar mapeos personalizados. A continuación, ingrese una Clave de etiqueta que desee obtener de cada Reclamación que desee representar en una etiqueta.
-
-
Seleccione Guardar cambios.
Puede asociar varios proveedores OpenID Connect a un único grupo de identidades.
Uso de OpenID Connect
Consulte la documentación de su proveedor para informarse de cómo iniciar sesión y recibir un token de ID.
Una vez que tenga el token, añádalo a la asignación de inicios de sesión. Utilice el URI de su proveedor como clave.
Validación de un token de OpenID Connect
En la primera integración con Amazon Cognito puede que reciba una excepción InvalidToken
. Es importante entender cómo Amazon Cognito valida los tokens de OpenID Connect (OIDC).
nota
Como se especifica aquí (https://tools.ietf.org/html/rfc7523
-
El parámetro
iss
debe coincidir con la clave que utiliza la asignación de inicios de sesión (por ejemplo, login.provider.com). -
La firma debe ser válida. Debe poder verificarse mediante una clave pública RSA.
-
La huella digital de la clave pública del certificado coincide con la huella digital que estableció en IAM cuando creó su proveedor OIDC.
-
Si el parámetro
azp
está presente, compruebe este valor comparándolo con la lista de los ID de cliente del proveedor OIDC. -
Si el parámetro
azp
no está presente, compruebe el parámetroaud
comparándolo con la lista de los ID de cliente del proveedor OIDC.
El sitio web jwt.io
Android
Map<String, String> logins = new HashMap<String, String>();
logins.put("login.provider.com", token);
credentialsProvider.setLogins(logins);
iOS - Objective-C
credentialsProvider.logins = @{ "login.provider.com": token }
iOS - Swift
Para proporcionar el token de ID de OIDC a Amazon Cognito, implemente el protocolo AWSIdentityProviderManager
.
En la implementación del método logins
, devuelva un diccionario que contenga el nombre del proveedor OIDC configurado. Este diccionario actúa como la clave y el token de ID actual del usuario autenticado actúa como valor, tal como se muestra en el siguiente ejemplo de código.
class OIDCProvider: NSObject, AWSIdentityProviderManager {
func logins() -> AWSTask<NSDictionary> {
let completion = AWSTaskCompletionSource<NSString>()
getToken(tokenCompletion: completion)
return completion.task.continueOnSuccessWith { (task) -> AWSTask<NSDictionary>? in
//login.provider.name is the name of the OIDC provider as setup in the Amazon Cognito console
return AWSTask(result:["login.provider.name":task.result!])
} as! AWSTask<NSDictionary>
}
func getToken(tokenCompletion: AWSTaskCompletionSource<NSString>) -> Void {
//get a valid oidc token from your server, or if you have one that hasn't expired cached, return it
//TODO code to get token from your server
//...
//if error getting token, set error appropriately
tokenCompletion.set(error:NSError(domain: "OIDC Login", code: -1 , userInfo: ["Unable to get OIDC token" : "Details about your error"]))
//else
tokenCompletion.set(result:"result from server id token")
}
}
Cuando cree instancias de AWSCognitoCredentialsProvider
, transmita la clase que implementa AWSIdentityProviderManager como valor de identityProviderManager en el constructor. Para obtener más información, vaya a la página de referencia AWSCognitoCredentialsProvider
JavaScript
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'IDENTITY_POOL_ID',
Logins: {
'login.provider.com': token
}
});
Unity
credentials.AddLogin("login.provider.com", token);
Xamarin
credentials.AddLogin("login.provider.com", token);