2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oauth2.0認証方法(一)

Last updated at Posted at 2019-11-03

SSO(シングル・サイン・オン)とは複数のサイトを一箇所にユーザ登録情報をまとまるとの方法です、よく大企業のポータルサイトで使われています。ホールティングズ会社のポータルサイトでサインインしてから各関連会社サイトやアプリケーションをログイン認証なしでアクセス可能です。
SSOの実装は従来クッキーでユーザIDと認証データを保存されて、繰り返して使われる方法とセッションでユーザIDと認証情報を保存して、認証を行う方法、二つがあります。
クッキー認証方法はあまり安全性が低くて、ドメイン間のアクセスは難しい(間接な方法がありますが)、あまりおすすめされていません。
一方、セッション管理方法では認証サーバを構築して、関連企業サイトとアプリケーションは事前にホワイトリストに登録する方法で対応しています。

Oauth2.0方法は最近よく使わています。グループ企業より中小企業間でも簡単に連携できるやSNSより発行されているトークンを使って認証を実施することができるとのメリットがあるため、また、ウェブサイト、リッチクライアント、スマホアプリなど同様に適用でき、幅広く使われています。

下記シーケンス図は一般的なOauth認証を表しています。

oauth01.png

Oauth2.0は下記四つのロールを定義されています。
- Resource Owner(リソース・オーナー)
Google,Twitterなどのユーザアカウント
- Resource Server(リソース・サーバ)
Google、Twitter,Facebookなど、また自分で立ちあがったサーバ
- Client application(クライアント・アプリケーション)
アプリケーション、ウェブサイトのブラウザ側やリッチクライアント、ネーティブアプリ
- Authorization Server(認証サーバ)
認証サーバ、リソースサーバと同一サーバ可能

oauth02.png

クライアントは2種類と定義されています。
・プライバシー型:
クライアント側がPWDを保管しています。ウェブアプリ、クライアントIDおよびPWDはサーバに保管されて、アクセス権限は限られています。
・パブリック型:
クライアント側がPWD保管しません。スマホアプリやリッチクライアントアプリは保存しない、ハッカーされやすいため、その代わりにパブリック型を使います。

ウェブアプリケーション
ウェブサイトなど、アプリケーションはウェブサーバより支配されて、認証用のクライアントIDとクライアントPWDはサーバに保存されています。(プライバシークライアント)
oauth03.png

User Agent Application(リッチウェブクライアント)
JSより構築されているアプリケーション、ブラウザよりアプリケーションをサーバからローカルにダウンロードしていました。
oauth04.png

ネーティブアプリ
oauth05.png

Hibrid
上記のひとつを選んで適用します。

Oauth 4つの認証方法

事前にクライアントアプリは認証サーバに登録しておきます、Client ID, Client secret(PWD)は生成されます。
登録時RedirectURIをサーバに提出します、このURIは今後ユーザが認証サーバで認証してから再度アプリにアクセス時のURLです。

四つの認証方法:
・Authorization Code
・Implicit
・Resource Owner Password Credentials
・Client Credentials

Authorization Code
1、ユーザよりクライアントアプリをアクセスする
2、認証サーバに登録
3、AuthorizationCodeは発行され、また事前登録されRedirectURIが送られる。
4、RedirectURIにアクセスする、AuthCodeとClientID,PWD一緒には認証サーバに送られ、
5、アクセストークンは発行される
6、アクセストークンによってリソースサーバをアクセス、リソースをアプリへ送る
7、アプリ連携

oauth06.png

Implicit
oauth07.png

アクセストークンより直接にアプリケーションをアクセスします。
またIDとPWDはローカルに保存され、安全性はあまり高くない。

Resource Owner Password Credentials
ユーザより第三方認証用アプリのユーザ名とPWDを入力することを要請します。

実はアクセストークンだけではなく、リフレッシュトークンは連携でアクセスを強化しています。
スクリーンショット 2019-11-03 22.08.54.png

参照:
http://tutorials.jenkov.com/oauth2/index.html
https://www.cnblogs.com/cjsblog/p/9174797.html
その他参照先:
https://medium.com/@darutk/diagrams-and-movies-of-all-the-oauth-2-0-flows-194f3c3ade85
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?