Skip to content
Snippets Groups Projects
Commit 2c9fbc62 authored by kaiyou's avatar kaiyou
Browse files

Fix the code checking the sso type

parent 40bf42fb
No related branches found
No related tags found
No related merge requests found
from hiboo import sso
from hiboo.service.forms import ServiceForm as BaseForm
from flask_babel import lazy_gettext as _
......@@ -31,9 +32,9 @@ class BaseApplication(object):
class OIDCApplication(BaseApplication):
sso_protocol = "oidc"
sso_protocol = sso.oidc
class SAMLApplication(BaseApplication):
sso_protocol = "saml"
sso_protocol = sso.saml
......@@ -11,7 +11,7 @@ def get_service(service_uuid, expected_protocol):
"""
service = models.Service.query.get(service_uuid) or flask.abort(404)
app = application.registry.get(service.application_id) or flask.abort(404)
app.sso_protocol == expected_protocol or flask.abort(404)
app.sso_protocol.__name__ == expected_protocol or flask.abort(404)
return service
......
......@@ -165,20 +165,20 @@ class Client(sqla_oauth2.OAuth2ClientMixin):
@blueprint.route("/oidc/authorize/<service_uuid>", methods=["GET", "POST"])
def oidc_authorize(service_uuid):
client = Client(get_service(service_uuid, "oidc"))
client = Client(get_service(service_uuid, __name__))
picked = profile.get_profile(client.service, intent=True) or flask.abort(403)
return client.authorization.create_authorization_response(grant_user=picked)
@blueprint.route("/oidc/token/<service_uuid>", methods=["POST"])
def oidc_token(service_uuid):
client = Client(get_service(service_uuid, "oidc"))
client = Client(get_service(service_uuid, __name__))
return client.authorization.create_token_response()
@blueprint.route("/oidc/userinfo/<service_uuid>", methods=["GET", "POST"])
def oidc_userinfo(service_uuid):
client = Client(get_service(service_uuid, "oidc"))
client = Client(get_service(service_uuid, __name__))
token = client.validate_token(flask.request)
profile = models.Profile.query.get(token["profile_uuid"])
return client.generate_user_info(profile, token["scope"])
......@@ -129,7 +129,7 @@ class MetaData(mdstore.InMemoryMetaData):
@blueprint.route("/saml/redirect/<service_uuid>", methods=["GET", "POST"])
def saml_redirect(service_uuid):
service = get_service(service_uuid, "saml")
service = get_service(service_uuid, __name__)
# Get the profile from user input (implies redirects)
picked = profile.get_profile(service, intent=True) or flask.abort(403)
# Parse the authentication request (which checks the signature)
......@@ -160,7 +160,7 @@ def saml_redirect(service_uuid):
@blueprint.route("/saml/metadata/<service_uuid>.xml")
def saml_metadata(service_uuid):
service = get_service(service_uuid, "saml")
service = get_service(service_uuid, __name__)
config = MetaData.get_config(service)
xml, _ = metadata.entities_descriptor(
[metadata.entity_descriptor(config)],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment