質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

OpenID

OpenIDは、様々なWebサイトで 1つのID情報のみで認証が可能にするサービスです。

Q&A

1回答

1601閲覧

OAuth2.0のどのフローを選んだらよいか

honesome

総合スコア7

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

OpenID

OpenIDは、様々なWebサイトで 1つのID情報のみで認証が可能にするサービスです。

0グッド

0クリップ

投稿2020/04/08 01:32

編集2020/04/08 03:15

OAuth2.0のどのフローを選んだら良いかをお聞きしたいです。

背景

一企業の閉じたLANで、サービスAを提供しています。
サービスAはSPA+バックエンドのシステムです。

システム自体にはログイン機能があり、ID/PWを基に認証して、Tokenを返し、
APIリクエスト時にBearer Tokenを投げるようにしております。

また、サービスAは1つの部署(部署A)が運用しており、
内部のリソース自体もエンドユーザーというよりその部署が所有し、
責任を持っております。

この度、別部署(部署B)においてサービスBを提供することになり、
サービスAと連携する(サービスAのAPIを使用する)ことになりました。
サービスBも、SPA+バックエンドの構成です。

質問内容

上記条件で、サービスBのエンドユーザーがサービスAを使用する場合、
OAuth2.0のどのフローを使用して、認可すればよいでしょうか。

疑問の中心点としては、サービスAのリソースを所有しているが
ユーザーではなく部署Aであるので、
認可エンドポイントをどのように行うかということです。

できるだけOAuthを試したいということもあり、
必要ないという場合でも、少しでもFITするフローがあれば試してみたいと思っております。

ご不明な点があれば、教えてください。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2020/04/08 01:39

それはつまり、ご自身でOAuthのサービスプロバイダを実装する、という事ですか?
honesome

2020/04/08 02:18 編集

そうだと認識しています。 Firebase等は使えないので、Spring Security、OpenAMまたはKeycloak等を使用することを想定しています。
guest

回答1

0

回答

OAuth2.0のどのフローを使用して、認可すればよいでしょうか。

ここでおっしゃるフローとは、以下の4つを指しているでしょうか。

  1. 認可コード
  2. インプリシット
  3. リソースオーナー・パスワード・クレデンシャルズ
  4. クライアント・クレデンシャルズ

これらについての質問であれば、1番の「認可コード」を利用すべきです。
(加えてPKCEも使うべきと考えられます)

認可コード以外のフローを利用すべきでない理由は以下のとおりです。

インプリシット
SPAからトークン要求する場合を想定した仕様ですが現在は非推奨となっています。
代わりに認可コード+PKCEの利用が推奨されています。

リソースオーナー・パスワード・クレデンシャルズ
クライアントにユーザーの認証情報(ID/パスワード)が渡ってしまいます。
今回のケースでいうと、サービスBがサービスAの認証情報を取得できてしまうということです。
(別にサービスBが認証情報を知ってもいいのであれば、リソースオーナー・パスワード・クレデンシャルズを利用してもいいと思います)

クライアント・クレデンシャルズ
クライアントの認証のみ行います。
りユーザー認証が行われないので、エンドユーザーが複数いるようなサービスでは使いません。

参考資料

投稿2020/05/04 02:26

70_10

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問