Open6
SSO周りのメモ

SSO(シングルサインオン)は、ユーザーが複数のシステムやアプリケーションにアクセスする際、一度のログイン操作で済ませることができる認証方式。
SSOを利用することで、ユーザーは異なるサービスを利用するたびにログイン情報を入力する必要がなくなる。

メリット
- 承認を一元化することで管理が楽に。
複数サービスでそれぞれログインとかが不要になる。→逆に言えば、数個ぐらいのサービスしかない場合は必要?
セキュリティ面やログの管理観点でも、統一できた方が良さそうではある。

認証方法(認証技術)については、以下のようなものが代表的みたい。
- SAML認証(フェデレーション)方式
- 代理認証(フォームベース)方式
- リバースプロキシ方式
- エージェント方式
- 透過型方式
記載以外だと、以下の方式が気になるので要確認。
- OpenID Connect(OIDC):
OIDCはOAuth 2.0プロトコルをベースにした認証レイヤーです。よりシンプルなJSON/RESTベースの交換を可能にし、ウェブアプリケーションはもちろん、モバイルアプリケーションでも広く利用されています。 - OAuth 2.0:
OAuth 2.0は、第三者アプリケーションがユーザーの代わりにリソースサーバー上のリソースにアクセスするための許可を得るためのフレームワークです。OAuth自体は認証プロトコルではありませんが、OIDCと組み合わせることで認証情報の共有が可能になります。 - JWT

SSOを導入するにあたり、システム同士の連携は可能か?は要確認。
外部のSaaSを使用する場合は特に。
自前のサービス同士を連携させる場合はおおかた大丈夫そう?
- 自前の認証サーバーがOAuth 2.0やOpenID Connectなどの標準プロトコルをサポートしていることは要確認。
- モバイルアプリからのリダイレクトURIを認証サーバーに登録し、認証が成功した後にユーザーがアプリに戻れるようにする必要ある?

モバイルアプリとwebとでSSOを実装する場合は実現可能?
ざっと調べた感じ、モバイルからWebへ遷移するさいに、URLのやり取りによってトークンの取得ができそうなので、実現はできそう?以下例。
上記外の参考になりそうなサイト:

モバイルアプリ間でSSOは実現可能?
ディープリンク機能で実現は可能そう?
- 元アプリからディープリンクで先アプリへ遷移。遷移時のURLに元アプリへ戻るための情報をもたせる?
- 先アプリでログイン。
- ログイン後に、先アプリに組み込まれたディープリンクから、元アプリへ戻る。この時のディープリンクのURLに認証トークンを引っ付ける。(コールバックURL的な?)
上記をFlutterのライブラリで実現できるのかは要検討。url_lancherとかで。
参考になりそうなリンク: