hydra_service.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import ory_hydra_client
  2. from ory_hydra_client.api import o_auth2_api
  3. from ory_hydra_client.models.accept_o_auth2_login_request import AcceptOAuth2LoginRequest
  4. from ory_hydra_client.models.reject_o_auth2_request import RejectOAuth2Request
  5. from ory_hydra_client.models.accept_o_auth2_consent_request import AcceptOAuth2ConsentRequest
  6. from ory_hydra_client.models.o_auth2_consent_session import OAuth2ConsentSession
  7. from app.core.hydra_config import hydra_settings
  8. class HydraService:
  9. def __init__(self):
  10. configuration = ory_hydra_client.Configuration(
  11. host=hydra_settings.HYDRA_ADMIN_URL
  12. )
  13. self.api_client = ory_hydra_client.ApiClient(configuration)
  14. self.oauth2 = o_auth2_api.OAuth2Api(self.api_client)
  15. def get_login_request(self, challenge: str):
  16. return self.oauth2.get_o_auth2_login_request(challenge)
  17. def accept_login_request(self, challenge: str, subject: str):
  18. body = AcceptOAuth2LoginRequest(
  19. subject=subject,
  20. remember=True,
  21. remember_for=3600,
  22. )
  23. return self.oauth2.accept_o_auth2_login_request(challenge, accept_o_auth2_login_request=body)
  24. def reject_login_request(self, challenge: str, error: str, error_description: str):
  25. body = RejectOAuth2Request(
  26. error=error,
  27. error_description=error_description
  28. )
  29. return self.oauth2.reject_o_auth2_login_request(challenge, reject_o_auth2_request=body)
  30. def get_consent_request(self, challenge: str):
  31. return self.oauth2.get_o_auth2_consent_request(challenge)
  32. def accept_consent_request(self, challenge: str, grant_scope: list, id_token_claims: dict):
  33. body = AcceptOAuth2ConsentRequest(
  34. grant_scope=grant_scope,
  35. grant_access_token_audience=[],
  36. remember=True,
  37. remember_for=3600,
  38. session=OAuth2ConsentSession(
  39. id_token=id_token_claims
  40. )
  41. )
  42. return self.oauth2.accept_o_auth2_consent_request(challenge, accept_o_auth2_consent_request=body)
  43. def reject_consent_request(self, challenge: str, error: str, error_description: str):
  44. body = RejectOAuth2Request(
  45. error=error,
  46. error_description=error_description
  47. )
  48. return self.oauth2.reject_o_auth2_consent_request(challenge, reject_o_auth2_request=body)
  49. hydra_service = HydraService()