OAuth 2.0 JWT シングルサインオン (SSO)
パンデミックの間、リモートワークによって攻撃の新たな機会が数多く生まれたため、サイバーセキュリティは大きな問題となった。その結果、企業はこれまで以上にサイバー攻撃への懸念を抱いている。
IAM SSO、MFAなどのサービス
このドキュメントでは、SSOプロトコルの1つであるOAuth 2.0について、その仕組み、用途、JWTの関わり方、OAuth 2.0とJWTを組織の一部として使用することで得られるメリットについて説明します。 IAM システム。
OAuth 2.0とは何ですか?
OAuth 2.0(Open Authorization)は、アプリケーションがHTTPサービス上のユーザーアカウントへの限定的なアクセス権を取得できるようにする認証フレームワークです。ユーザー認証をユーザーアカウントをホストするサービスに委任し、サードパーティアプリケーションがユーザーアカウントにアクセスすることを承認します。
OAuth 2.0は、Webアプリケーション、デスクトップアプリケーション、およびモバイルデバイス向けの認証フローを提供します。
このページには、miniOrangeが認証サーバー上で公開しているOAuth 2.0エンドポイントに関する詳細情報が記載されています。
OpenID Connect(OIDC)は、ユーザー認証を処理するためのOAuth 2.0プロトコル上に構築された薄いIDレイヤーです。OAuth 2.0は認可のための標準プロトコルであり、OIDCはユーザー認証のためのプロトコルです。これら2つのプロトコルを組み合わせることで、シングルサインオン(SSO)を通じて、複数回のログインを必要とせずに、複数のアプリやウェブサイトに安全にアクセスできます。
OpenID Connectプロトコルについて詳しく知りたい場合は、こちらのページをご覧ください。
JWTとは何ですか?
JWT(JSON Web Token)は、JSONオブジェクトとして情報を安全に当事者間で送信するための、コンパクトで自己完結型の方法を定義するオープンスタンダード(RFC 7519)です。この情報は、秘密鍵(HMACアルゴリズムを使用)またはRSAもしくはECDSAを使用した公開鍵/秘密鍵ペアでデジタル署名されているため、検証および信頼性を確保できます。
OAuth 2.0の仕組みを理解しましょう
このシナリオでは、miniOrange IdPとOAuth 2.0 / OpenID Connect (OIDC)プロトコルを使用して、Webアプリケーションへのシングルサインオン(SSO)を実現できます。WebアプリケーションはOAuth 2.0クライアントとして機能します。
OAuth 2.0 SSOワークフロー
- 未知のユーザーがWordPress(例えば、あなたのウェブアプリケーション)にアクセスしようとしています。
- WordPressはminiOrange(OAuthプロバイダー/OpenID Connectサーバー)に認証リクエストを送信します。
- miniOrangeのOAuthサーバーは、ユーザーにログインしてアプリケーションを承認するように促します。
- ユーザーはログインページにリダイレクトされ、そこでログインします。
- miniOrangeはユーザーを認証し、認証コードをWordPressに送信します。
- WordPressは、miniOrangeから受け取った認証コードとともに、独自のclient_idとclient_secretを送信します。
- miniOrangeはリクエストを認証し、アクセストークンとJWTをWordPressに送信します。
- WordPressはアクセストークンを使用してリソースサーバー上のリソースにアクセスし、JWT(JSON Web Token)を検証します。
- miniOrangeは、アクセストークン、IDトークン(JWT)、およびユーザー情報を使用して、ユーザーが保護された機能にアクセスできるようにします。
- これでユーザーは認証され、ログインしました。したがって、ユーザーは認証情報を入力することなくリソースにアクセスできるようになります。
JWTの検証
JWT(JSON Web Token、通常はid_tokenと呼ばれる)には、ユーザーのIDデータが含まれています。クライアントアプリケーションは、ユーザー名、メールアドレスなどのユーザー情報を取得するためにこれを使用します。コールバックエンドポイントでは、JWTトークン(ユーザー情報)を読み取って解析できます。JSON Web Token(JWT)の構造:
JWTはドット(.)で区切られた3つの部分から構成されます。
(例 - xxxx.yyyyyyyyyyyy.zzzzzz)、次のとおりです。
- ヘッダ: ペイロードの署名に使用された署名アルゴリズム名が含まれています。
- ペイロード: メールアドレス、名前などのユーザー属性が含まれています。
- 署名: ペイロードの署名値。
ユーザー情報を含むJSONデータを入手したら、メールアドレスとユーザー名をローカル認証機能に渡すことでログインを開始できます。
JWTには以下のJSON属性が含まれています。
| フィールド |
詳細説明 |
| ISS |
発行者を示すHTTPS URI |
| 以下 |
発行者のユーザーの識別子 |
| AUD |
要求元クライアントの client_id |
| 使節 |
クライアントから受信した nonce パラメータ値 |
| EXP |
このトークンの有効期限 |
| イート |
このトークンが発行された時刻 |
| 認証時間 |
認証が行われた時刻 |
| ハッシュ |
アクセストークンのハッシュの前半 |
OAuth 2.0を使うべき理由とは?
miniOrangeは、以下のシナリオにおいてOAuth 2.0プロトコルを使用したSSOの有効化を支援します。
- 組織が探しているもの 認証認可システム しかし、それを一から実装する時間とリソースがない。
- 組織がより安全な認証方法に切り替えたい場合は、 トークンベース認証。
- あなたの組織が シームレスなログイン体験 ユーザーにとっては、複数のユーザー名とパスワードを覚える手間が省ける。
- ユーザーに認証をさせたい場合は、 より信頼性の高いアプリケーション GoogleやFacebookなど、ユーザーの身元確認の信頼性を保証する企業。
私たちはあなたのために何ができますか?
ビジネスを改善したい、複数のサービスを利用するアカウントの複数の認証情報を管理する負担を軽減したい、あるいは単に当社についてもっと知りたいという方は、ぜひご連絡ください。
外部参照