2
0

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 1 year has passed since last update.

Cognito x Amplify x Swift で認証

Posted at

概要

Cognito, Amplifyを使って認証機能を実装するメモです。

環境

amplify-swift v2

前提

今回はアプリ側の実装や設定にフォーカスします。
また、メールアドレスとパスワードで認証する想定です。
Cognitoの設定情報はプロジェクトのルートにamplifyconfigure.jsonを設置することにしました。

初期設定

Swift Package Managerを使ってamplify-swiftを導入します。

その後、amplifyconfigure.jsonに必要情報を記載します。

amplifyconfigure.json
{
    "auth": {
        "plugins": {
            "awsCognitoAuthPlugin": {
                "IdentityManager": {
                    "Default": {}
                },
                "CredentialsProvider": {
                    "CognitoIdentity": {
                        "Default": {
                            "PoolId": "[COGNITO IDENTITY POOL ID]",
                            "Region": "[REGION]"
                        }
                    }
                },
                "CognitoUserPool": {
                    "Default": {
                        "PoolId": "[COGNITO USER POOL ID]",
                        "AppClientId": "[COGNITO USER POOL APP CLIENT ID]",
                        "Region": "[REGION]"
                    }
                },
                "Auth": {
                    "Default": {
                        "authenticationFlowType": "USER_SRP_AUTH"
                    }
                }
            }
        }
    }
}

AppDelegate.swift

AppDelegateAmplifyの初期化を行います。

AppDelegate.swift
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
    do {
        try Amplify.add(plugin: AWSCognitoAuthPlugin())
        try Amplify.configure()
    } catch {
        print(error)
    }
    
    return true
}

ユーザ作成

サインアップを処理する関数です。

func signUp(email: String, password: String) async throws {
    let userAttributes = [AuthUserAttribute(.email, value: email)]
    let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
    
    let result = try await Amplify.Auth.signUp(username: email, password: password, options: options)
    if case let .confirmUser(details, _, userID) = result.nextStep {
        print("details: \(details), userID: \(userID)")
    }
}

検証

テストします。
UIViewControllerviewDidLoadでサインアップ処理を実施し、AWSマネジメントコンソールにユーザが追加されるか確認します。

確認したところ画像のようにユーザが追加されてました。

また、入力したメールアドレスにはCognitoから認証コードが届いてました。

届いた認証コードを使ってユーザを認証する、
サインアップしたユーザでサインインするのが、次のステップになるかと思います。
AmplifyのSDKを使うことで認証処理を簡単に実装することができました。

参考

2
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?