- Descripción general del servicio
- Pasos iniciales
-
Guía del usuario
- Antes de comenzar
- Inicio de sesión en Huawei Cloud
-
Usuarios de IAM
- Creación de un usuario de IAM
- Asignación de permisos a un usuario de IAM
- Inicio de sesión como usuario de IAM
- Consulta o modificación de información de usuario de IAM
- Eliminación de un usuario de IAM
- Cambiar la contraseña de inicio de sesión de un usuario de IAM
- Gestión de claves de acceso para un usuario de IAM
- Grupos de usuarios y autorización
- Gestión de permisos
- Proyectos
- Agencias
- Configuraciones de seguridad
-
Proveedores de identidades
- Introducción
- Escenarios de aplicación de SSO de usuario virtual y SSO de usuario de IAM
-
SSO de usuario virtual a través de SAML
- Descripción general del inicio de sesión único del usuario virtual a través de SAML
- Paso 1: Crear una entidad IdP
- Paso 2: Configurar el IdP de la empresa
- Paso 3: Configurar reglas de conversión de identidad
- Paso 4: Verificar el inicio de sesión federado
- (Opcional) Paso 5: Configurar una entrada de inicio de sesión federada en el IdP de empresa
-
SSO de usuario de IAM a través de SAML
- Descripción general del inicio de sesión único del usuario de IAM a través de SAML
- Paso 1: Crear una entidad IdP
- Paso 2: Configurar el IdP de la empresa
- Paso 3: Configurar un ID de identidad externo
- Paso 4: Verificar el inicio de sesión federado
- (Opcional) Paso 5: Configurar una entrada de inicio de sesión federada en el IdP de empresa
- SSO de usuario virtual a través de OpenID Connect
- Sintaxis de las reglas de conversión de identidad
- Broker de identidades personalizado
- Autenticación MFA y dispositivo MFA virtual
- Consulta de registros de operación de IAM
- Cuotas
- Historial de cambio
-
Preguntas frecuentes
-
Gestión de grupos de usuarios y permisos
- ¿Por qué no puedo encontrar permisos para un servicio en la nube?
- ¿Cómo otorgo servicios en nube en la región EU-Dublin a usuarios de IAM?
- ¿Por qué los permisos otorgados a un usuario no entran en vigor?
- ¿Cómo puedo conceder a un usuario de IAM permisos para realizar pedidos pero no permitir el pago de pedidos?
- Gestión de usuarios de IAM
-
Configuraciones de seguridad
- ¿Cómo puedo habilitar la verificación de inicio de sesión?
- ¿Cómo deshabilito la verificación de inicio de sesión?
- ¿Cómo cambio el método de verificación para realizar operaciones críticas?
- ¿Cómo desactivo la protección de la operación?
- ¿Cómo puedo vincular un dispositivo MFA virtual?
- ¿Cómo obtengo un código de verificación de MFA virtual?
- ¿Cómo puedo desvincular o quitar un dispositivo MFA virtual?
- ¿Por qué falla la autenticación de MFA?
- ¿Por qué no obtengo el código de verificación?
- ¿Por qué mi cuenta está bloqueada?
- ¿Por qué mi política de control de acceso no entra en vigor?
- ¿Por qué todavía necesito realizar MFA durante el inicio de sesión después de desvincular el dispositivo MFA virtual?
-
Contraseñas y credenciales
- ¿Cómo puedo restablecer mi contraseña?
- ¿Cómo cambio mi contraseña?
- ¿Cómo obtengo una clave de acceso (AK/SK)?
- ¿Qué debo hacer si he olvidado mi clave de acceso (AK/SK)?
- ¿Qué son las credenciales de seguridad temporal (AK/SK y SecurityToken)?
- ¿Cómo obtengo un token con permisos de administrador de seguridad?
- ¿Cómo obtengo una clave de acceso (A/SK) en la región EU-Dublin?
- Gestión de proyectos
- Gestión de delegación
-
Gestión de cuentas
- ¿Por qué falla el inicio de sesión de la cuenta?
- ¿Cuáles son las relaciones entre una cuenta de Huawei Cloud, el ID de HUAWEI, el usuario de IAM y el usuario federado?
- ¿Cuáles son las posibles causas de una falla de actualización de ID de HUAWEI?
- ¿Puedo iniciar sesión con mi cuenta Huawei Cloud después de actualizarla a un ID de HUAWEI?
-
Otros
- ¿Cómo obtengo un token de usuario usando Postman?
- ¿Por qué siempre se muestra la ayuda a nivel de campo?
- ¿Cómo puedo desactivar la contraseña de relleno automático en Google Chrome?
- Región y AZ
- ¿Cómo solicito los permisos para acceder a recursos en una región de la Alianza en la nube usando mi cuenta de Huawei Cloud o el ID de HUAWEI?
-
Gestión de grupos de usuarios y permisos
-
Referencia de la API
- Antes de empezar
- Descripción de las API
- Llamadas a APIs
- Pasos iniciales
-
API
- Gestión de token
-
Gestión de claves de acceso
- Obtención de una clave de acceso temporal y un token de seguridad a través de una delegación
- Obtención de una clave de acceso temporal y un token de seguridad a través de un token
- Creación de una clave de acceso permanente
- Consulta de claves de acceso permanente
- Consulta de una clave de acceso permanente
- Modificación de una clave de acceso permanente
- Eliminación de una clave de acceso permanente
- Gestión de regiones
-
Gestión de proyectos
- Consulta de información del proyecto
- Listado de proyectos
- Listado de proyectos accesibles para un usuario de IAM
- Creación de un proyecto
- Modificación de la información del proyecto
- Consulta de información del proyecto
- Cambio del estado del proyecto
- Consulta de información y estado del proyecto
- Consulta de las cuotas de un proyecto
- Gestión de cuentas
-
Gestión de usuarios de IAM
- Listado de usuarios de IAM
- Consulta de detalles de usuario de IAM (recomendado)
- Consulta de los detalles del usuario de IAM
- Consulta de los grupos de usuarios a los que pertenece un usuario de IAM
- Consulta de los usuarios de IAM en un grupo
- Creación de un usuario de IAM (recomendado)
- Creación de un usuario de IAM
- Cambio de la contraseña de inicio de sesión
- Modificación de la información del usuario de IAM (recomendado)
- Modificación de la información del usuario de IAM (recomendado)
- Modificación de la información de usuario
- Eliminación de un usuario de IAM
-
Gestión de grupos de usuarios
- Listado de grupos de usuarios
- Consulta de detalles del grupo de usuarios
- Creación de un grupo de usuarios
- Actualización de la información del grupo de usuarios
- Eliminación de un grupo de usuarios
- Comprobación de si un usuario de IAM pertenece a un grupo de usuarios
- Adición de un usuario de IAM a un grupo de usuarios
- Eliminación de un usuario de IAM de un grupo de usuarios
-
Gestión de permisos
- Permisos de listado
- Consulta de detalles de permisos
- Consulta de registros de asignación de permisos
- Consulta de permisos de un grupo de usuarios para un proyecto de servicio global
- Consulta de permisos de un grupo de usuarios para un proyecto específico de región
- Concesión de permisos a un grupo de usuarios para un proyecto de servicio global
- Concesión de permisos a un grupo de usuarios para un proyecto específico de región
- Comprobación de si un grupo de usuarios tiene permisos especificados para un proyecto de servicio global
- Comprobación de si un grupo de usuarios tiene permisos especificados para un proyecto específico de región
- Consulta de todos los permisos de un grupo de usuarios
- Comprobación de si un grupo de usuarios tiene permisos especificados para todos los proyectos
- Eliminación de permisos especificados de un grupo de usuarios en todos los proyectos
- Eliminación de permisos de un grupo de usuarios para un proyecto de servicio global
- Eliminación de los permisos de un grupo de usuarios para un proyecto específico de región
- Concesión de permisos a un grupo de usuarios para todos los proyectos
-
Gestión de políticas personalizadas
- Listado de políticas personalizadas
- Consulta de detalles de políticas personalizadas
- Creación de una política personalizada para servicios en la nube
- Creación de una política personalizada para delegaciones
- Modificación de una directiva personalizada para servicios en la nube
- Modificación de una política personalizada para delegaciones
- Eliminación de una política personalizada
-
Gestión de representación
- Delegaciones de listado
- Consulta de los detalles de la delegación
- Creación de una delegación
- Modificación de una delegación
- Eliminación de una delegación
- Consulta de permisos de una delegación para un proyecto de servicio global
- Consulta de permisos de una delegación para un proyecto específico de la región
- Concesión de permisos a una delegación para un proyecto de servicio global
- Concesión de permisos a una delegación para un proyecto específico de la región
- Comprobación de si una delegación tiene permisos especificados para un proyecto de servicio global
- Comprobación de si una delegación tiene permisos especificados para un proyecto específico de la región
- Eliminación de permisos de una delegación para un proyecto de servicio global
- Eliminación de permisos de una delegación para un proyecto específico de la región
- Consulta de todos los permisos de una delegación
- Concesión de permisos específicos a una agencia para todos los proyectos
- Comprobación de si una delegación tiene permisos especificados
- Eliminación de permisos especificados de una delegación en todos los proyectos
-
Gestión de proyecto empresarial
- Consulta de grupos de usuarios asociados a un proyecto empresarial
- Consulta de los permisos de un grupo de usuarios asociado a un proyecto empresarial
- Concesión de permisos a un grupo de usuarios asociado a un proyecto empresarial
- Eliminación de permisos de un grupo de usuarios asociado a un proyecto empresarial
- Consultar el proyecto empresarial asociado a un grupo de usuarios
- Consultar los proyectos empresariales asociados con un usuario de IAM
- Consulta de Usuarios Directamente Asociados a un Proyecto empresarial
- Consulta de permisos de un usuario directamente asociado a un proyecto empresarial
- Otorgar permisos de usuario para un proyecto empresarial
- Eliminación de permisos de un usuario directamente asociado a un proyecto empresarial
- Concesión de permisos a delegaciones asociadas a proyectos empresariales específicos
- Eliminación de permisos de delegaciones asociadas a proyectos empresariales específicos
-
Configuraciones de seguridad
- Modificación de la política de protección de operaciones
- Consulta de la política de protección de operaciones
- Modificación de la política de contraseñas
- Consulta de la política de contraseñas de una cuenta
- Modificación de la política de autenticación de inicio de sesión
- Consulta de la política de autenticación de inicio de sesión
- Modificación de la ACL para el acceso a la consola
- Consulta de la ACL para el acceso a la consola
- Modificación de la ACL para el acceso a la API
- Consulta de la ACL para el acceso a la API
- Consulta de información del dispositivo MFA de los usuarios de IAM
- Consulta de la información del dispositivo MFA de un usuario de IAM
- Consulta de configuraciones de protección de inicio de sesión de usuarios de IAM
- Consulta de la configuración de protección de inicio de sesión de un usuario de IAM
- Modificación de la configuración de protección de inicio de sesión de un usuario de IAM
- Vinculación de un dispositivo MFA virtual
- Desvinculación de un dispositivo MFA virtual
- Creación de un dispositivo MFA virtual
- Eliminación de un dispositivo MFA virtual
-
Gestión de autenticación de identidades federadas
- Obtención de un token a través de la autenticación de identidad federada
-
Proveedores de identidades
- Listado de proveedores de identidad
- Consulta de detalles del proveedor de identidades
- Creación de un proveedor de identidad
- Modificación de un proveedor de identidad SAML
- Eliminación de un proveedor de identidad SAML
- Creación de una configuración de proveedor de identidades OpenID Connect
- Modificación de un proveedor de identidades OpenID Connect
- Consulta de un proveedor de identidades OpenID Connect
- Asignaciones
- Protocolos
- Metadato
- Token
- Credenciales
- Listado de cuentas accesibles para usuarios federados
- Agentes de identidad personalizados
- Gestión de la información de versiones
- Servicios y puntos de conexión
-
API fuera de fecha
- Consulta de grupos de usuarios asociados a un proyecto empresarial
- Consulta de los permisos de un grupo de usuarios asociado a un proyecto empresarial
- Concesión de permisos a un grupo de usuarios asociado a un proyecto empresarial
- Eliminación de los permisos de un grupo de usuarios asociado a un proyecto empresarial
- Permisos y acciones
- Apéndice
- Historial de cambio
- Actualmente, el contenido no está disponible en el idioma seleccionado. Sugerimos consultar la versión en inglés.
- What's New
- Function Overview
- Best Practices
- SDK Reference
- Videos
-
More Documents
-
User Guide (ME-Abu Dhabi Region)
- Service Overview
- Getting Started
-
User Guide
- Before You Start
- IAM Users
- User Groups and Authorization
- Permissions
- Projects
- Agencies
- Account Security Settings
- Identity Providers
- MFA Authentication and Virtual MFA Device
- Viewing IAM Operation Records
- Quotas
-
FAQs
- User Groups and Permissions Management
- IAM User Management
-
Security Settings
- How Do I Enable Login Authentication?
- How Do I Disable Login Authentication?
- How Do I Change the Verification Method for Performing Critical Operations?
- How Do I Disable Operation Protection?
- How Do I Bind a Virtual MFA Device?
- How Do I Obtain a Virtual MFA Verification Code?
- How Do I Unbind or Remove a Virtual MFA Device?
- Why Does MFA Authentication Fail?
- Why Am I Not Getting the Verification Code?
-
Passwords and Credentials
- How Do I Reset My Password?
- How Do I Change My Password?
- What Should I Do If I Have Forgotten My Access Key (AK/SK)?
- What Are Temporary Security Credentials (AK/SK and SecurityToken)?
- How Do I Obtain a Token with Security Administrator Permissions?
- How Do I Obtain an Access Key (AK/SK) in the ME-Abu Dhabi-OP5 Region?
- Project Management
- Agency Management
- Others
- Change History
- API Reference (ME-Abu Dhabi Region)
-
User Guide (Paris Regions)
- Service Overview
- Getting Started
-
User Guide
- IAM Users
- User Groups and Authorization
- Permissions
- Account Settings
- Projects
- Agencies
- Identity Providers
- MFA Authentication and Virtual MFA Device
- Auditing
-
FAQs
- How Do I Enable Login Authentication?
- How Do I Bind a Virtual MFA Device?
- How Do I Obtain MFA Verification Codes?
- How Do I Unbind a Virtual MFA Device?
- Why Does IAM User Login Fail?
- How Do I Control IAM User Access to the Console?
- Differences Between IAM and Enterprise Management
- What Are the Differences Between IAM Projects and Enterprise Projects?
- How Can I Obtain Permissions to Create an Agency?
- What Can I Do If Text Box Prompt Information Does Not Disappear?
- How Do I Disable Password Association and Saving on Google Chrome?
- How Do I Grant Cloud Service Permissions in the EU-Paris Region to IAM Users?
- How Do I Obtain an Access Key (AK/SK) in the EU-Paris Region?
- Change History
- API Reference (Paris Regions)
-
User Guide (Kuala Lumpur Region)
- Service Overview
- Getting Started
-
User Guide
- Before You Start
- IAM Users
- User Groups and Authorization
- Permissions Management
- Projects
- Agencies
- Security Settings
- Identity Providers
- MFA Authentication and Virtual MFA Device
- Viewing IAM Operation Records
- Quotas
-
FAQs
- User Groups and Permissions Management
- IAM User Management
-
Security Settings
- How Do I Enable Login Verification?
- How Do I Disable Login Verification?
- How Do I Change the Verification Method for Performing Critical Operations?
- How Do I Disable Operation Protection?
- How Do I Bind a Virtual MFA Device?
- How Do I Obtain a Virtual MFA Verification Code?
- How Do I Unbind or Remove a Virtual MFA Device?
- Why Does MFA Authentication Fail?
- Why Am I Not Getting the Verification Code?
- Why Is My Account Locked?
- Why Do I Still Need to Perform MFA During Login After Unbinding the Virtual MFA Device?
-
Passwords and Credentials
- What Should I Do If I Forgot My Password?
- How Do I Change My Password?
- What Should I Do If I Have Forgotten My Access Key (AK/SK)?
- What Are Temporary Security Credentials (AK/SK and Security Token)?
- How Do I Obtain a Token with Security Administrator Permissions?
- How Do I Obtain an Access Key (AK/SK) in the AP-Kuala Lumpur-OP6 Region?
- Project Management
- Agency Management
- Others
- Change History
-
API Reference (Kuala Lumpur Region)
- Before You Start
- API Overview
- Calling APIs
-
APIs
- Token Management
- Access Key Management
- Region Management
-
Project Management
- Querying Project Information Based on the Specified Criteria
- Querying a User Project List
- Querying the List of Projects Accessible to Users
- Creating a Project
- Modifying Project Data
- Querying Information About a Specified Project
- Setting the Status of a Specified Project
- Querying Information and Status of a Specified Project
- Querying the Quotas of a Project
- Tenant Management
-
User Management
- Querying a User List
- Querying User Details
- Querying User Details (Recommended)
- Querying the User Group to Which a User Belongs
- Querying Users in a User Group
- Creating a User
- Changing a Password
- Modifying User Information
- Modifying User Information (Including Email Address and Mobile Number)
- Modifying User Information (Including Email Address and Mobile Number)
- Deleting a User
- Deleting a User from a User Group
- Querying MFA Device Information of Users
- Querying the MFA Device Information of a User
- Querying Login Protection Configurations of Users
- Querying the Login Protection Configuration of a User
- Creating a Virtual MFA Device
- Deleting a Virtual MFA Device
- Binding a Virtual MFA Device
- Unbinding a Virtual MFA Device
- Modifying the Login Protection Configuration of a User
- User Group Management
-
Permission Management
- Querying a Role List
- Querying Role Details
- Querying Permissions of a User Group Under a Domain
- Querying Permissions of a User Group Corresponding to a Project
- Granting Permissions to a User Group of a Domain
- Granting Permissions to a User Group Corresponding to a Project
- Deleting Permissions of a User Group Corresponding to a Project
- Deleting Permissions of a User Group of a Domain
- Querying Whether a User Group Under a Domain Has Specific Permissions
- Querying Whether a User Group Corresponding to a Project Has Specific Permissions
- Granting Permissions to a User Group for All Projects
- Removing Specified Permissions of a User Group in All Projects
- Checking Whether a User Group Has Specified Permissions for All Projects
- Querying All Permissions of a User Group
- Custom Policy Management
-
Agency Management
- Creating an Agency
- Querying an Agency List Based on the Specified Conditions
- Obtaining Details of a Specified Agency
- Modifying an Agency
- Deleting an Agency
- Granting Permissions to an Agency for a Project
- Checking Whether an Agency Has the Specified Permissions on a Project
- Querying the List of Permissions of an Agency on a Project
- Deleting Permissions of an Agency on a Project
- Granting Permissions to an Agency on a Domain
- Checking Whether an Agency Has the Specified Permissions on a Domain
- Querying the List of Permissions of an Agency on a Domain
- Deleting Permissions of an Agency on a Domain
- Querying All Permissions of an Agency
- Granting Specified Permissions to an Agency for All Projects
- Checking Whether an Agency Has Specified Permissions
- Removing Specified Permissions of an Agency in All Projects
-
Security Settings
- Querying the Operation Protection Policy
- Modifying the Operation Protection Policy
- Querying the Password Policy
- Modifying the Password Policy
- Querying the Login Authentication Policy
- Modifying the Login Authentication Policy
- Querying the ACL for Console Access
- Modifying the ACL for Console Access
- Querying the ACL for API Access
- Modifying the ACL for API Access
- Federated Identity Authentication Management
- Version Information Management
- Services and Endpoints
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
User Guide (Ankara Region)
- Service Overview
- Getting Started
-
User Guide
- Before You Start
- IAM Users
- User Groups and Authorization
- Permissions Management
- Projects
- Agencies
- Security Settings
- Identity Providers
- MFA Authentication and Virtual MFA Device
- Quotas
-
FAQs
- IAM User Management
-
Security Settings
- How Do I Enable Login Verification?
- How Do I Disable Login Verification?
- How Do I Change the Verification Method for Performing Critical Operations?
- How Do I Disable Operation Protection?
- How Do I Bind a Virtual MFA Device?
- How Do I Obtain a Virtual MFA Verification Code?
- How Do I Unbind or Remove a Virtual MFA Device?
- Why Does MFA Authentication Fail?
- Why Am I Not Getting the Verification Code?
- Passwords and Credentials
- Agency Management
- Others
- Change History
- API Reference (Ankara Region)
-
User Guide (ME-Abu Dhabi Region)
Copiado.
IdP iniciado
Esta sección utiliza el script Client4ShibbolethIdP como ejemplo para describir cómo obtener un token de autenticación federado en el modo iniciado por IdP. El script Client4ShibbolethIdP simula un usuario que inicia sesión en un sistema IdP usando un navegador, lo que le ayuda a desarrollar su propio script de cliente IdP.
Prerrequisitos
- Su servidor IdP admite la autenticación de identidad federada iniciada por IdP.
- La biblioteca de Python BeautifulSoup 4 se ha instalado en el cliente.
Diagrama de flujo
La siguiente figura muestra el proceso de autenticación de federación iniciada por IdP.

Descripción
- El cliente visita el enlace de inicio de sesión proporcionado por IdP para el inicio de sesión iniciado por IdP y establece la dirección de nube pública (entityID en el archivo de metadatos del sistema en la nube) en el enlace de inicio de sesión.
- El cliente muestra la página de inicio de sesión de IdP, lo que permite a los usuarios enviar información de identidad a IdP para su autenticación.
- Después de autenticar al usuario, el IdP construye una aserción que lleva la información de identidad del usuario y envía una respuesta SAML al cliente.
- El cliente encapsula la respuesta SAML y la reenvía al sistema en la nube para invocar a la API utilizada para obtener un token federado en el modo iniciado por IdP.
- El sistema en la nube verifica y autentica la aserción, y genera una credencial de acceso temporal de acuerdo con las reglas de conversión de identidad del usuario configurado para el proveedor de identidad.
- El usuario puede acceder a los recursos de la nube pública en función de los permisos asignados.
Implementación en el cliente
Esta sección utiliza el script Client4ShibbolethIdP.py para describir cómo implementar la autenticación de identidad federada para el acceso de API/CLI al sistema en la nube desde un IdP.
Puede descargar el script aquí:
https://obs-iam-download01.obs.cn-north-1.myhwclouds.com/non-ecp-script/Client4ShibblethIdP.py
- Configure la URL de inicio de sesión del IdP.
Tabla 1 URL de inicio de sesión de productos comunes de IdP IdP
Parámetro de SP en URL
Ejemplo de URL de inicio de sesión
ADFS
logintorp
https://adfs-server.contoso.com/adfs/ls/IdpInitiatedSignon.aspx?logintorp=https://iam.example.com
Shibboleth
providerId
https://idp.example.org/idp/profile/SAML2/Unsolicited/SSO?providerId=iam.example.com
SimpleSAMLphp
spentityid
https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=iam.example.com
Después de la configuración, introduzca una URL de inicio de sesión en la barra de direcciones de un navegador. Aparecerá en la pantalla la página siguiente.
Figura 2 Página de inicio de sesiónScript Client4ShibbolethIdP:import sys import requests import getpass import re from bs4 import BeautifulSoup from urlparse import urlparse # SSL certificate verification: Whether or not strict certificate # verification is done, False should only be used for dev/test sslverification = True # Get the federated credentials from the user print "Username:", username = raw_input() password = getpass.getpass() print '' session = requests.Session() # The initial url that starts the authentication process. idp_entry_url = 'https://idp.example.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https://iam.example.com' # Programmatically get the SAML assertion,open the initial IdP url# and follows all of the HTTP302 redirects, and gets the resulting# login page formresponse = session.get(idp_entry_url, verify=sslverification) # Capture the idp_authform_submit_url,which is the final url after# all the 302s idp_authform_submit_url = formresponse.url
- El cliente usa Beautifulsoup 4 para capturar la información del usuario y la acción solicitada, y luego construye y envía una solicitud de autenticación de identidad al IdP.
El cliente adquiere todos los datos del formulario enviados a través de la página de inicio de sesión.
Figura 3 Información de autenticación (1)Script Client4ShibbolethIdP:
# Parse the response and extract all the necessary values in order to build a dictionary of all of the form values the IdP expects formsoup = BeautifulSoup(formresponse.text.decode('utf8'), "lxml") payload = {} for inputtag in formsoup.find_all(re.compile('(INPUT|input)')): name = inputtag.get('name', '') value = inputtag.get('value', '') if "username" in name.lower(): payload[name] = username elif "password" in name.lower(): payload[name] = password else: payload[name] = value for inputtag in formsoup.find_all(re.compile('(FORM|form)')): action = inputtag.get('action') if action: parsedurl = urlparse(idp_entry_url) idp_authform_submit_url = parsedurl.scheme + "://" + parsedurl.netloc + action # please test on browser first, add other parameters in payload payload["_eventId_proceed"] = "" formresponse = session.post( idp_authform_submit_url, data=payload, verify=sslverification)
- El cliente analiza la página siguiente. (Algunas IdPs muestran una página de atributos de usuario.)
El cliente adquiere todos los datos del formulario enviados a través de la página de inicio de sesión.
Figura 4 Información de autenticación (2)Script Client4ShibbolethIdP:
# In shebbleth IdP v3, browser will show attributes page for user,# so we need parse the page formsoup = BeautifulSoup(formresponse.text.decode('utf8'), "lxml") payload = {} # Add other form data required from browser to payload _shib_idp_consentIds = [] for inputtag in formsoup.find_all(re.compile('input')): name = inputtag.get("name") value = inputtag.get("value") if name == "_shib_idp_consentIds": _shib_idp_consentIds.append(value) payload["_shib_idp_consentIds"] = _shib_idp_consentIds payload["_shib_idp_consentOptions"] = "_shib_idp_rememberConsent" payload["_eventId_proceed"] = "Accept" # user can get the action url from the html file nexturl = "https://idp.example.com/idp/profile/SAML2/Unsolicited/SSO?execution=e1s2" for inputtag in formsoup.find_all(re.compile('(FORM|form)')): action = inputtag.get('action') if action: parsedurl = urlparse(idp_entry_url) nexturl = parsedurl.scheme + "://" + parsedurl.netloc + action response = session.post( nexturl, data=payload, verify=sslverification)
- Si la autenticación se realiza correctamente, el cliente analiza la respuesta SAML enviada por el IdP.
Script Client4ShibbolethIdP:
# Decode the response and extract the SAML assertion soup = BeautifulSoup(response.text.decode('utf8'), "lxml") SAMLResponse = '' # Look for the SAMLResponse attribute of the input tag for inputtag in soup.find_all('input'): if (inputtag.get('name') == 'SAMLResponse'): SAMLResponse = inputtag.get('value') # Better error handling is required for production use. if (SAMLResponse == ''): print 'Response did not contain a valid SAML assertion, please troubleshooting in Idp side.' sys.exit(0)
- Obtenga un token sin alcance. Para obtener más información, véase Obtención de un token sin alcance (IdP iniciado).
Script Client4ShibbolethIdP:
# Set headers headers = {} headers["X-Idp-Id"] = "test_local_idp" # IAM API url: get unscoped token on IDP initiated mode sp_unscoped_token_url = "https://iam.example.com/v3.0/OS-FEDERATION/tokens" # Set form data payload = {} payload["SAMLResponse"] = SAMLResponse response = session.post( sp_unscoped_token_url, data=payload, headers=headers, verify=sslverification) # Debug only print(response.text) print "Status Code: " + str(response.status_code) if response.status_code != 201: sys.exit(1) unscoped_token = response.headers.get("X-Subject-Token") if "X-Subject-Token" in response.headers.keys() else None if unscoped_token: print ">>>>>>X-Subject-Token: " + unscoped_token
- Obtener un token de alcance. Para obtener más información, véase Obtención de un token con ámbito.
Client4ShibbolethIdP script:
payload = { "auth": { "identity": { "methods": ["token"], "token": { "id": unscoped_token } }, "scope": { "project": { "name": "{region_id}_test1" } } } } sp_scoped_token_url = "https://10.120.171.90:31943/v3/auth/tokens" response = session.post( sp_scoped_token_url, json=payload, verify=sslverification) # Debug only print "Status Code: " + str(response.status_code) if response.status_code != 201: print response.text sys.exit(1) scoped_token = response.text if response.status_code == 201 else None if scoped_token: print ">>>>>>Scoped Token:" + scoped_token
- Obtener una clave de acceso temporal. Para obtener más información, véase Obtención de una clave de acceso temporal y un token de seguridad a través de un token.
Script Client4ShibbolethIdP:
# Set form data payload = { "auth": { "identity": { "methods": ["token"], "token": { "duration_seconds": "900" } } } } # Set headers headers = {} headers["X-Auth-Token"] = unscoped_token sp_STS_token_url = "https://10.120.171.90:31943/v3.0/OS-CREDENTIAL/securitytokens" response = session.post( sp_STS_token_url, json=payload, headers=headers, verify=sslverification) # Debug only print "Status Code: " + str(response.status_code) if response.status_code != 201: print response.text sys.exit(1) sts_token = response.text if response.status_code == 201 else None if sts_token: print ">>>>>>STS Token:" + sts_token