| 25 | | final class OidcSession extends AbstractSession |
| 26 | | { |
| 27 | | final public const string OIDC_STATE = 'pmf-oidc-state'; |
| 28 | | final public const string OIDC_NONCE = 'pmf-oidc-nonce'; |
| 29 | | final public const string OIDC_PKCE_CODE = 'pmf-oidc-pkce-code'; |
| 30 | | final public const string OIDC_ID_ASSERTION = 'pmf-oidc-id-assertion'; |
| 31 | | |
| 32 | | public function __construct(Session $session) |
| 33 | | { |
| 34 | | parent::__construct($session); |
| 35 | | } |
| 36 | | |
| 37 | | public function setAuthorizationState(string $state, string $nonce, string $pkceVerifier): void |
| 38 | | { |
| 39 | | $this->set(self::OIDC_STATE, $state); |
| 40 | | $this->set(self::OIDC_NONCE, $nonce); |
| 41 | | $this->set(self::OIDC_PKCE_CODE, $pkceVerifier); |
| 42 | | } |
| 43 | | |
| 44 | | |
| 45 | | |
| 46 | | |
| 47 | | public function getAuthorizationState(): array |
| 48 | | { |
| 49 | | return [ |
| 50 | | 'state' => (string) $this->get(self::OIDC_STATE), |
| 51 | | 'nonce' => (string) $this->get(self::OIDC_NONCE), |
| 52 | | 'verifier' => (string) $this->get(self::OIDC_PKCE_CODE), |
| 53 | | ]; |
| 54 | | } |
| 55 | | |
| 56 | | public function clearAuthorizationState(): void |
| 57 | | { |
| 58 | | $this->set(self::OIDC_STATE, ''); |
| 59 | | $this->set(self::OIDC_NONCE, ''); |
| 60 | | $this->set(self::OIDC_PKCE_CODE, ''); |
| 61 | | } |
| 62 | | |
| 63 | | public function setIdToken(#[\SensitiveParameter] string $idToken): void |
| 64 | | { |
| 65 | | $this->set(self::OIDC_ID_ASSERTION, $idToken); |
| 66 | | } |
| 67 | | |
| 68 | | public function getIdToken(): string |
| 69 | | { |
| 70 | | return (string) $this->get(self::OIDC_ID_ASSERTION); |
| 71 | | } |
| 72 | | |
| 73 | | public function clearIdToken(): void |
| 74 | | { |
| 75 | | $this->set(self::OIDC_ID_ASSERTION, ''); |
| 76 | | } |
| 77 | | } |