Get user info from hydra
This commit is contained in:
parent
17d5d3dd95
commit
4a82c8f224
4 changed files with 26 additions and 6 deletions
|
@ -27,8 +27,19 @@ def hydra_callback():
|
||||||
raise BadRequest("Missing code query param")
|
raise BadRequest("Missing code query param")
|
||||||
|
|
||||||
token = HydraOauth.get_token(state, code)
|
token = HydraOauth.get_token(state, code)
|
||||||
|
user_info = HydraOauth.get_user_info()
|
||||||
|
|
||||||
access_token = create_access_token(
|
access_token = create_access_token(
|
||||||
identity=token, expires_delta=timedelta(days=365)
|
identity=token, expires_delta=timedelta(days=365)
|
||||||
)
|
)
|
||||||
|
|
||||||
return jsonify({"access_token": access_token})
|
return jsonify(
|
||||||
|
{
|
||||||
|
"accessToken": access_token,
|
||||||
|
"userInfo": {
|
||||||
|
"email": user_info["email"],
|
||||||
|
"name": user_info["name"],
|
||||||
|
"preferredUsername": user_info["preferred_username"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
|
@ -5,4 +5,5 @@ KRATOS_URL = os.environ.get("KRATOS_URL")
|
||||||
HYDRA_CLIENT_ID = os.environ.get("HYDRA_CLIENT_ID")
|
HYDRA_CLIENT_ID = os.environ.get("HYDRA_CLIENT_ID")
|
||||||
HYDRA_CLIENT_SECRET = os.environ.get("HYDRA_CLIENT_SECRET")
|
HYDRA_CLIENT_SECRET = os.environ.get("HYDRA_CLIENT_SECRET")
|
||||||
HYDRA_AUTHORIZATION_BASE_URL = os.environ.get("HYDRA_AUTHORIZATION_BASE_URL")
|
HYDRA_AUTHORIZATION_BASE_URL = os.environ.get("HYDRA_AUTHORIZATION_BASE_URL")
|
||||||
|
HYDRA_URL = os.environ.get("HYDRA_URL")
|
||||||
TOKEN_URL = os.environ.get("TOKEN_URL")
|
TOKEN_URL = os.environ.get("TOKEN_URL")
|
||||||
|
|
|
@ -6,8 +6,6 @@ from helpers import HydraError
|
||||||
|
|
||||||
|
|
||||||
class HydraOauth:
|
class HydraOauth:
|
||||||
SESSION_KEY = "oauth_state"
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def authorize():
|
def authorize():
|
||||||
try:
|
try:
|
||||||
|
@ -16,9 +14,6 @@ class HydraOauth:
|
||||||
HYDRA_AUTHORIZATION_BASE_URL
|
HYDRA_AUTHORIZATION_BASE_URL
|
||||||
)
|
)
|
||||||
|
|
||||||
# State is used to prevent CSRF, keep this for later.
|
|
||||||
session[HydraOauth.SESSION_KEY] = state
|
|
||||||
|
|
||||||
return authorization_url
|
return authorization_url
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
raise HydraError(str(err), 500)
|
raise HydraError(str(err), 500)
|
||||||
|
@ -41,3 +36,15 @@ class HydraOauth:
|
||||||
return token
|
return token
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
raise HydraError(str(err), 500)
|
raise HydraError(str(err), 500)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_user_info():
|
||||||
|
try:
|
||||||
|
hydra = OAuth2Session(
|
||||||
|
client_id=HYDRA_CLIENT_ID, token=session["hydra_token"]
|
||||||
|
)
|
||||||
|
user_info = hydra.get("{}/userinfo".format(HYDRA_URL))
|
||||||
|
|
||||||
|
return user_info.json()
|
||||||
|
except Exception as err:
|
||||||
|
raise HydraError(str(err), 500)
|
||||||
|
|
|
@ -24,6 +24,7 @@ export SECRET_KEY="e38hq!@0n64g@qe6)5csk41t=ljo2vllog(%k7njnm4b@kh42c"
|
||||||
export KRATOS_URL="http://127.0.0.1:8000"
|
export KRATOS_URL="http://127.0.0.1:8000"
|
||||||
export HYDRA_CLIENT_ID="dashboard-local"
|
export HYDRA_CLIENT_ID="dashboard-local"
|
||||||
export HYDRA_CLIENT_SECRET="gDSEuakxzybHBHJocnmtDOLMwlWWEvPh"
|
export HYDRA_CLIENT_SECRET="gDSEuakxzybHBHJocnmtDOLMwlWWEvPh"
|
||||||
|
export HYDRA_URL="https://sso.init.stackspin.net"
|
||||||
export HYDRA_AUTHORIZATION_BASE_URL="https://sso.init.stackspin.net/oauth2/auth"
|
export HYDRA_AUTHORIZATION_BASE_URL="https://sso.init.stackspin.net/oauth2/auth"
|
||||||
export TOKEN_URL="https://sso.init.stackspin.net/oauth2/token"
|
export TOKEN_URL="https://sso.init.stackspin.net/oauth2/token"
|
||||||
flask run
|
flask run
|
||||||
|
|
Loading…
Reference in a new issue