現在、ネイティブ モバイル アプリケーションを開発しており、システム内のリソースを消費するために、ID サーバー (thinktecture ID サーバー v3 で作成) および/または外部のソーシャル ID プロバイダーでエンド ユーザーを認証する必要があります。
OIDC を使用して、アクセス トークンと ID トークンを取得しようとしています。完璧な世界では、エンド ユーザーがログオフすることを決定するまで、ネイティブ モバイル アプリケーションのエンド ユーザーが(ネイティブ アプリの再起動後も) 無期限にログに記録されたままになることを望んでいます。
まず、暗黙的なフローを選択しました。しかし、このフローでは更新トークンを使用できないことがわかりました。
1. 暗黙的なフロー仕様がリフレッシュ トークンを禁止するのはなぜですか? 危険はどこですか?
2. 言い換えれば、トークン エンドポイントが暗黙的フローで「到達可能」でないのはなぜですか?
次に、ハイブリッド フローをテストして、更新トークン (非常に長期間有効ですが取り消し可能) とアクセス トークン (有効期間が短い) を取得しました。問題は、client_secret をネイティブのパブリック クライアントに埋め込むことです。(OIDC 仕様で説明されているように、不適切で安全でない慣行)
3) では…ネイティブ パブリック アプリはハイブリッド フローを使用できません…ですね。
そのため、現在、カスタム コード フロー ソリューションが良いアイデアであるかどうか疑問に思っています。独自のセキュリティで保護された client_secret を使用してトークン エンドポイントに到達できる「プロキシ」/「フロントエンド」Web API を作成し、コード/ネイティブ クライアント アプリから認可サーバー トークン エンドポイントへの refresh_token/access_token リクエスト?
4) これについて何かコメントはありますか?