From da6b4f5e493e29cefb4ef0788f58111023a95030 Mon Sep 17 00:00:00 2001 From: kaiyou <pierre@jaury.eu> Date: Tue, 12 May 2020 17:41:38 +0200 Subject: [PATCH] Fix the sso authentication status --- hiboo/sso/oidc.py | 15 ++++++++------- hiboo/sso/saml.py | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/hiboo/sso/oidc.py b/hiboo/sso/oidc.py index 89f69ab0..019db789 100644 --- a/hiboo/sso/oidc.py +++ b/hiboo/sso/oidc.py @@ -7,10 +7,10 @@ It relies heavily on authlib for the OAuth/OIDC implementation. from authlib.integrations import flask_oauth2, sqla_oauth2 from authlib.oauth2 import rfc6749 as oauth2 from authlib.oidc import core as oidc -from authlib.common import security +from authlib.common import security as authlib_security from hiboo.sso import blueprint, get_service -from hiboo import models, utils, profile +from hiboo import models, utils, profile, security import flask import time @@ -22,9 +22,9 @@ def fill_service(service): """ if "client_id" not in service.config: service.config.update( - client_id=security.generate_token(24), - client_secret=security.generate_token(48), - jwt_key=security.generate_token(24), + client_id=authlib_security.generate_token(24), + client_secret=authlib_security.generate_token(48), + jwt_key=authlib_security.generate_token(24), jwt_alg="HS256" ) @@ -38,7 +38,7 @@ class AuthorizationCodeMixin(object): def create_authorization_code(self, client, profile, request): obj = AuthorizationCodeMixin.AuthorizationCode( - code=security.generate_token(48), nonce=request.data.get("nonce") or "", + code=authlib_security.generate_token(48), nonce=request.data.get("nonce") or "", client_id=client.client_id, redirect_uri=request.redirect_uri, scope=request.scope, user_id=profile.uuid, auth_time=int(time.time()) @@ -145,7 +145,7 @@ class Client(sqla_oauth2.OAuth2ClientMixin): """ Specific token generation function to help keep track of the profile associated with a token """ return dict( - client_id=self.client_id, token_type="Bearer", access_token=security.generate_token(48), + client_id=self.client_id, token_type="Bearer", access_token=authlib_security.generate_token(48), issued_at=time.time(), expires_in=expires_in or 3600, profile_uuid=user.uuid, scope=scope or "" ) @@ -166,6 +166,7 @@ class Client(sqla_oauth2.OAuth2ClientMixin): @blueprint.route("/oidc/authorize/<service_uuid>", methods=["GET", "POST"]) +@security.authentication_required() def oidc_authorize(service_uuid): client = Client(get_service(service_uuid, __name__)) picked = profile.get_profile(client.service, intent=True) or flask.abort(403) diff --git a/hiboo/sso/saml.py b/hiboo/sso/saml.py index e656c545..3599045e 100644 --- a/hiboo/sso/saml.py +++ b/hiboo/sso/saml.py @@ -8,7 +8,7 @@ request parsing and response crafting. """ from hiboo.sso import blueprint, get_service -from hiboo import profile +from hiboo import profile, security from cryptography import x509 from cryptography.hazmat import primitives, backends @@ -128,6 +128,7 @@ class MetaData(mdstore.InMemoryMetaData): @blueprint.route("/saml/redirect/<service_uuid>", methods=["GET", "POST"]) +@security.authentication_required() def saml_redirect(service_uuid): service = get_service(service_uuid, __name__) # Get the profile from user input (implies redirects) -- GitLab