開発実装 #15
Lunatic1998 さんが約1年前に更新
#### ### 概要 - AWS Cognitoへ認証リダイレクトURLを送信し、Cognitoによるサインアップ/ログインが完了するポイントまで実装 - 新規作成したユーザーをDBに更新するなどのアプリ側での実装は本チケットでは対象範囲外とする #### 対応内容の詳細 - 以下のイシューにて、対応した実装内容の詳細はまとめた。 - サインアップ/ログインAPIの実装 - AWS Cognitoへ受け渡すリダイレクトURLの作成するモジュールの実装 - AWS Cognitoにて、不備があった設定について、Terraformファイルを修正 - 不足していたライブラリのインストール #### ### イシュー - https://gitlab.com/bay1998/Operation-App-Demo/-/issues/11 #### MR - https://gitlab.com/bay1998/Operation-App-Demo/-/merge_requests/7 - 認可エンドポイント - https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/authorization-endpoint.html - OpenID Connect (OIDC) 標準における認可エンドポイントの定義 - https://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthorizationEndpoint ### JWT - aws-jwt-verify ライブラリを用いて、ユーザーがアプリに渡すトークンのパラメータを検証する。 - JWKS URI には、ユーザーのトークンに署名した秘密鍵に関する公開情報が含まれている。 - https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html #### `lib/cognito_urls.rb` ``` def init(domain, region) @base_oauth_uri = "https://%s.auth.%s.amazoncognito.com" % [domain, region] @base_idp_uri = "https://cognito-idp.%s.amazonaws.com" % [region] end def jwks_uri(pool_id) path = "/%s/.well-known/jwks.json" % [pool_id] URI.join(@base_idp_uri, path).to_s end def refresh_token_uri @base_idp_uri end def authorize_uri URI.join(@base_oauth_uri, AUTHORIZE_PATH).to_s end def token_uri URI.join(@base_oauth_uri, TOKEN_PATH).to_s end def login_uri(app_client_id, redirect_uri) path = "%s?response_type=code&client_id=%s&redirect_uri=%s" % [LOGIN_PATH, app_client_id, redirect_uri] URI.join(@base_oauth_uri, path).to_s end def signup_uri(app_client_id, redirect_uri) path = "%s?response_type=code&client_id=%s&redirect_uri=%s" % [SIGNUP_PATH, app_client_id, redirect_uri] URI.join(@base_oauth_uri, path).to_s end ```