¿Cómo usar un frasco o botella con SAML?
Dejar un mensaje
SAML, o Lenguaje de marcado de afirmación de seguridad, es un estándar abierto para intercambiar datos de autenticación y autorización entre partes, particularmente en el contexto del inicio de sesión único (SSO) basado en la web. La integración de SAML con marcos web como Flask o Bottle puede mejorar significativamente la seguridad y la experiencia del usuario de sus aplicaciones. Como proveedor de Flask and Bottle, estoy aquí para guiarlo a través del proceso de uso de estos marcos con SAML.
Comprender los conceptos básicos de SAML
Antes de sumergirse en el proceso de integración, es fundamental comprender los conceptos básicos de SAML. SAML opera según un modelo de tres partes: el proveedor de servicios (SP), el proveedor de identidad (IdP) y el usuario. El SP es la aplicación que requiere autenticación, mientras que el IdP es responsable de verificar la identidad del usuario. Cuando un usuario intenta acceder a un recurso protegido en el SP, el SP redirige al usuario al IdP para su autenticación. Una vez que el IdP verifica la identidad del usuario, envía una aserción SAML al SP, que luego otorga al usuario acceso al recurso solicitado.
Requisitos previos
Para integrar SAML con Flask o Bottle, necesitará lo siguiente:
- Una aplicación de Frasco o Botella.
- Un proveedor de identidad SAML (IdP). Puede utilizar un IdP comercial como Okta o OneLogin, o configurar el suyo propio utilizando soluciones de código abierto como Shibboleth.
- El
python3-samlbiblioteca, que proporciona una implementación Python del protocolo SAML.
Integrando SAML con Flask
Comencemos integrando SAML con una aplicación Flask. Primero, instale elpython3-samlbiblioteca usando pip:
pip instala python3-saml
A continuación, cree una aplicación Flask y configure los ajustes de SAML. He aquí un ejemplo:
desde flask import Flask, redireccionamiento, solicitud desde onelogin.saml2.auth import OneLogin_Saml2_Auth desde onelogin.saml2.utils import OneLogin_Saml2_Utils app = Flask(__name__) def init_saml_auth(req): auth = OneLogin_Saml2_Auth(req, custom_base_path='saml_config') return auth def prepare_flask_request(solicitud): return { 'https': 'activado' si request.scheme == 'https' else 'off', 'http_host': request.host, 'server_port': request.environ['SERVER_PORT'], 'script_name': request.path, 'get_data': request.args.copy(), 'post_data': request.form.copy() } @app.route('/') def index(): req = prepare_flask_request(solicitud) auth = init_saml_auth(req) return redirección(auth.login()) @app.route('/acs', métodos=['POST']) def acs(): req = prepare_flask_request(solicitud) auth = init_saml_auth(req) auth.process_response() errores = auth.get_errors() si no errores: devuelve '¡Autenticado correctamente!' else: devuelve 'Error de autenticación: {}'.format(', '.join(errors)) if __name__ == '__main__': app.run(debug=True)
En este ejemplo, el/La ruta redirige al usuario al IdP para su autenticación. El/acsLa ruta es el punto final del Assertion Consumer Service (ACS), que recibe la aserción SAML del IdP y la procesa.
Integración de SAML con Bottle
La integración de SAML con una aplicación Bottle es similar a la integración de Flask. Primero, instale elpython3-samlbiblioteca si aún no lo has hecho. Luego, cree una aplicación Bottle y configure los ajustes de SAML. He aquí un ejemplo:
desde botella importar Botella, redirigir, solicitud desde onelogin.saml2.auth importar OneLogin_Saml2_Auth desde onelogin.saml2.utils importar OneLogin_Saml2_Utils aplicación = Botella() def init_saml_auth(req): auth = OneLogin_Saml2_Auth(req, custom_base_path='saml_config') devolver autenticación def prepare_bottle_request(solicitud): return { 'https': 'activado' si request.url.startswith('https') else 'off', 'http_host': request.host, 'server_port': request.environ.get('SERVER_PORT', '80'), 'script_name': request.path, 'get_data': request.query.dict, 'post_data': request.forms.dict } @app.route('/') def index(): req = prepare_bottle_request(solicitud) auth = init_saml_auth(req) return redirección(auth.login()) @app.route('/acs', método='POST') def acs(): req = prepare_bottle_request(request) auth = init_saml_auth(req) auth.process_response() errores = auth.get_errors() si no hay errores: devuelve '¡Autenticado correctamente!' else: devuelve 'Error de autenticación: {}'.format(', '.join(errors)) if __name__ == '__main__': app.run(debug=True)
En este ejemplo, el/La ruta redirige al usuario al IdP para su autenticación y el/acsLa ruta procesa la aserción SAML.
Configuración de los ajustes de SAML
La configuración de SAML se almacena en un archivo de configuración. Crea un directorio llamadosaml_configen la raíz de su proyecto y cree un archivo llamadoconfiguración.jsondentro de él. Aquí hay una configuración de ejemplo:
{ "strict": true, "debug": true, "sp": { "entityId": "https://your-app.com/metadata", "assertionConsumerService": { "url": "https://your-app.com/acs", "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" }, "singleLogoutService": { "url": "https://your-app.com/slo", "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" }, "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "x509cert": "", "privateKey": "" }, "idp": { "entityId": "https://your-idp.com/metadata", "singleSignOnService": { "url": "https://your-idp.com/sso", "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" }, "singleLogoutService": { "url": "https://your-idp.com/slo", "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" }, "x509cert": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----" } }
Reemplace las URL y la información del certificado con sus valores reales.


Beneficios de usar SAML con matraz o botella
La integración de SAML con Flask o Bottle ofrece varios beneficios:
- Seguridad mejorada: SAML proporciona una forma segura de autenticar usuarios mediante firmas digitales y cifrado.
- Inicio de sesión único (SSO): Los usuarios pueden iniciar sesión en varias aplicaciones con un único conjunto de credenciales, lo que mejora la experiencia del usuario.
- Gestión de identidad centralizada: SAML le permite administrar las identidades de los usuarios desde una ubicación central, lo que facilita el control del acceso a sus aplicaciones.
Conclusión
La integración de SAML con Flask o Bottle es un proceso sencillo que puede mejorar significativamente la seguridad y la experiencia del usuario de sus aplicaciones. Como proveedor de matraces y botellas, puedo brindarle el soporte y los recursos necesarios para garantizar una integración fluida. Si está interesado en comprar nuestros productos de matraz o botella, o si tiene alguna pregunta sobre la integración SAML, por favorcontáctenos para una discusión detallada.
Producto relacionado
Si también busca contenedores isotérmicos de alta calidad, consulte nuestrosCafetera aislada de acero inoxidable. Es perfecto para mantener tus bebidas frías o calientes durante períodos prolongados.
Referencias
- Documentación de la biblioteca SAML de OneLogin Python
- Documentación del matraz
- Documentación de la botella
- Especificación SAML






