チュートリアル: iOS/macOS アプリでのサインアップ後にユーザーを自動的にサインインさせる
適用対象: iOS (Swift) macOS (Swift)
このチュートリアルでは、ネイティブ認証を使って iOS アプリにサインアップした後で、ユーザーを自動的にサインインさせる方法について説明します。
このチュートリアルでは、次の作業を行う方法について説明します。
- サインアップ後のサインイン。
- エラーを処理します。
前提条件
- iOS を使用している場合は、「ネイティブ認証を使用してサンプル iOS (Swift) モバイル アプリでユーザーをサインインする」 の手順に従います。 macOS を使用している場合は、「ネイティブ認証を使用してサンプル macOS (Swift) アプリでユーザーをサインインする」の手順に従ってください。 この記事では、テナント設定を使用して構成するサンプル Android を実行する方法について説明します。
- チュートリアル: ネイティブ認証を使用して iOS アプリにサインアップを追加する。 このチュートリアルの手順は、サインアップにメール アドレスとパスワードを使用するか、メールのワンタイム パスコードを使用するかに関係なく機能します。
サインアップ後にサインインする
Sign in after sign up
は、サインイン ユーザー フローの拡張機能であり、正常にサインアップした後に自動的にサインインできるようになります。 SDK を使用すると、開発者はサインアップ後にユーザー名を指定せずにユーザーをサインインさせたり、ワンタイム パスコードを使用してメール アドレスを確認したりできます。
サインアップが成功した後にユーザーをサインインさせるには、onSignUpCompleted(newState)
で返された新しい状態 SignInAfterSignUpState
の signIn(delegate)
メソッドを使用します。
extension ViewController: SignUpVerifyCodeDelegate {
func onSignUpVerifyCodeError(error: MSAL.VerifyCodeError, newState: MSAL.SignUpCodeRequiredState?) {
resultTextView.text = "Error verifying code: \(error.errorDescription ?? "no description")"
}
func onSignUpCompleted(newState: SignInAfterSignUpState) {
resultTextView.text = "Signed up successfully!"
newState.signIn(delegate: self)
}
}
signIn(delegate)
はデリゲート パラメータを受け取るため、SignInAfterSignUpDelegate
プロトコルで必要なメソッドを実装する必要があります。
最も一般的なシナリオでは、ユーザーがサインインしたことを示す onSignInCompleted(result)
の呼び出しを受け取ります。 結果を使用して、access token
を取得できます。
extension ViewController: SignInAfterSignUpDelegate {
func onSignInAfterSignUpError(error: SignInAfterSignUpError) {
resultTextView.text = "Error signing in after sign up"
}
func onSignInCompleted(result: MSAL.MSALNativeAuthUserAccountResult) {
// User successfully signed in
result.getAccessToken(delegate: self)
}
}
getAccessToken(delegate)
はデリゲート パラメータを受け取るため、CredentialsDelegate
プロトコルで必要なメソッドを実装する必要があります。
最も一般的なシナリオでは、ユーザーが access token
を取得したことを示す onAccessTokenRetrieveCompleted(result)
の呼び出しを受け取ります。
extension ViewController: CredentialsDelegate {
func onAccessTokenRetrieveError(error: MSAL.RetrieveAccessTokenError) {
resultTextView.text = "Error retrieving access token"
}
func onAccessTokenRetrieveCompleted(result: MSALNativeAuthTokenResult) {
resultTextView.text = "Signed in. Access Token: \(result.accessToken)"
}
}
カスタム クレーム プロバイダーの構成
外部システムからのクレームをアプリに発行されるトークンに追加する場合は、カスタム クレーム プロバイダーを使用します。 カスタム クレーム プロバイダーは、外部システムからクレームを取り込むために、外部 REST API を呼び出すカスタム認証拡張機能で構成されています。
カスタム クレーム プロバイダーの構成の手順に従って、外部システムからのクレームをセキュリティ トークンに追加します。