| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | from flask import current_app, redirectfrom flask_restful import Resource, reqparsefrom controllers.console import apifrom controllers.console.setup import setup_requiredfrom services.enterprise.enterprise_sso_service import EnterpriseSSOServiceclass EnterpriseSSOSamlLogin(Resource):    @setup_required    def get(self):        return EnterpriseSSOService.get_sso_saml_login()class EnterpriseSSOSamlAcs(Resource):    @setup_required    def post(self):        parser = reqparse.RequestParser()        parser.add_argument('SAMLResponse', type=str, required=True, location='form')        args = parser.parse_args()        saml_response = args['SAMLResponse']        try:            token = EnterpriseSSOService.post_sso_saml_acs(saml_response)            return redirect(f'{current_app.config.get("CONSOLE_WEB_URL")}/signin?console_token={token}')        except Exception as e:            return redirect(f'{current_app.config.get("CONSOLE_WEB_URL")}/signin?message={str(e)}')class EnterpriseSSOOidcLogin(Resource):    @setup_required    def get(self):        return EnterpriseSSOService.get_sso_oidc_login()class EnterpriseSSOOidcCallback(Resource):    @setup_required    def get(self):        parser = reqparse.RequestParser()        parser.add_argument('state', type=str, required=True, location='args')        parser.add_argument('code', type=str, required=True, location='args')        parser.add_argument('oidc-state', type=str, required=True, location='cookies')        args = parser.parse_args()        try:            token = EnterpriseSSOService.get_sso_oidc_callback(args)            return redirect(f'{current_app.config.get("CONSOLE_WEB_URL")}/signin?console_token={token}')        except Exception as e:            return redirect(f'{current_app.config.get("CONSOLE_WEB_URL")}/signin?message={str(e)}')api.add_resource(EnterpriseSSOSamlLogin, '/enterprise/sso/saml/login')api.add_resource(EnterpriseSSOSamlAcs, '/enterprise/sso/saml/acs')api.add_resource(EnterpriseSSOOidcLogin, '/enterprise/sso/oidc/login')api.add_resource(EnterpriseSSOOidcCallback, '/enterprise/sso/oidc/callback')
 |