AWS Cognitoと連携する認証APIをIBM API Connectで実装
こんにちは。
私たちIntegrationチームはシステム/アプリケーションを統合するソリューションエンジニアであり、API、メッセージ・データ、ファイルを使った様々なデータソースやアプリケーションの統合において、製品の選定から設計・構築、そして導入後のサポートを行っております。
このBlogでは、私自身がワークショップや設計工程でお客様へ説明する中で、内容を理解することが難しいと捉えられることが多いOAuthを使ったAPIの保護について、AWS Cognitoを使ってIBM API Connectで認証API実装する方法をご紹介します。
OAuthで保護するAPIアクセスとは?
具体的な実装方法に触れる前にOAuthでAPIを保護する場合、APIユーザーが目的のAPIに対してアクセスができるようになるまでのプロセスを再確認していきましょう。
AWS CognitoとAPI Connectの連携
AWS Cognito※1(①~⑥までを担当)を連携してIBM API Connectで公開したAPIをOAuthで保護する実装を見ていきます。
(1)認証APIの作成
⑧と⑨の動作に該当する認証APIを次の仕様に基づき作成します。ここでは、作成したAPI公開手順までは説明しませんが、作成したAPIは公開する必要があります。
- 認証APIはPOSTメソッドを介してAPIクライアントからアクセストークンを受け取る
- cognitoの/userinfoエンドポイントに問い合わせてアクセストークンの寿命を確認
->ステータスコード「200」であればユーザー情報が返却されるため、有効と判断
->ステータスコード「200」以外(401)であれば寿命が尽きているため、無効と判断 - 有効と判断した場合は認証APIが返却するデータ項目「activeをtrue(bool型)※2」を設定
- 無効と判断した場合は認証APIが返却するデータ項目「activeをfalse(bool型)※2」を設定
(2)OAuth Providerの定義
(1)で作成した認証APIをOAuth保護で利用するため、IBM API ConnectのリソースメニューよりOAuthプロバイダー(サードパーティ)を設定します。
(3)APIのOAuth保護
(2)で定義したOAuthプロバイダを保護したいAPIのセキュリティスキームに紐づけます。
以上、IBM API ConnectとAWS Cognito(IdPとして使う場合)を連携させ、APIをOAuthで保護するための実装に関するご紹介となります。
次回はIBM App Connect EnterpriseからAWSのlow-level APIをコールする方法をご紹介します。
※1 今回のBlogテーマがIBM API Connectに認証APIを実装することであるため、Cognitoのセットアップは省略
※2 The OAuth 2.0 Authorization Framework(https://datatracker.ietf.org/doc/html/rfc6749)