Okta を IdP として、外部 PHP サイトを SP として SSO の実装に成功しました。現在、PHP SP に SAML2 トークンを送信する Okta サインオン ウィジェットを使用しています。
質問は、ウィジェットから API に変更しても、API 経由でログインに成功したときに SAML 2 トークンを取得できるかどうかです。
だから、これを投稿してから、「はい、できます」ということがわかりました。これが最もクリーンで最善の方法かどうかはわかりませんが、うまくいきます。他の誰かがこの問題を調べて行き詰まった場合に備えて、これを行う方法を次に示します...
IdP としての Okta と SP としての PHP サイトの間で、SAML2 通信が既に機能しています。
Okta で API アクセス トークンを作成します。
アクセス トークンを使用して、ログインする特定のユーザーの API からの 1 回限りの使用トークンのリクエストを送信します: http://developer.okta.com/docs/api/resources/sessions.html
取得したワンタイム セッション トークンを持つユーザーを、ワンタイム セッション トークンを持つアプリの埋め込みリンクにリダイレクトします: http://developer.okta.com/docs/examples/session_cookie.html#retrifying-a-session-cookie-アプリケーションの埋め込みリンクにアクセスする
これにより、ユーザーは Okta にログインして適切なセッションを取得し、それを使用して PHP エンドポイントに送信して、必要な SAML2 トークンを取得できますが、API の完全なカスタマイズの利点を活用できます。