次の方法で共有


チュートリアル: iOS/macOS アプリでのサインアップ後にユーザーを自動的にサインインさせる

適用対象: 灰色の X 記号がある白い円。 従業員テナント 白いチェック マーク記号がある緑の円。 外部テナント (詳細情報)

このチュートリアルでは、ネイティブ認証を使って iOS アプリにサインアップした後で、ユーザーを自動的にサインインさせる方法について説明します。

このチュートリアルでは、次の操作を行います。

  • サインアップ後にサインインします。
  • エラーを処理します。

[前提条件]

サインアップ後にサインインする

Sign in after sign up は、サインイン ユーザー フローの拡張機能であり、正常にサインアップした後に自動的にサインインできるようになります。 SDK を使用すると、開発者はサインアップ後にユーザー名を指定せずにユーザーをサインインさせたり、ワンタイム パスコードを使用してメール アドレスを確認したりできます。

サインアップが成功した後にユーザーをサインインさせるには、signIn(delegate) で返された新しい状態 SignInAfterSignUpStateonSignUpCompleted(newState) メソッドを使用します。

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!"
        let parameters = MSALNativeAuthSignInAfterSignUpParameters()
        newState.signIn(parameters: parameters, delegate: self)
    }
}

signIn(parameters:delegate) は、MSALNativeAuthSignInAfterSignUpParameters インスタンスとデリゲート パラメーターを受け取り、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
        let parameters = MSALNativeAuthGetAccessTokenParameters()
        result.getAccessToken(parameters: parameters, delegate: self)
    }
}

getAccessToken(parameters:delegate) は、MSALNativeAuthGetAccessTokenParameters インスタンスとデリゲート パラメーターを受け取り、CredentialsDelegate プロトコルで必要なメソッドを実装する必要があります。

最も一般的なシナリオでは、ユーザーが onAccessTokenRetrieveCompleted(result) を取得したことを示す access token の呼び出しを受け取ります。

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 を呼び出すカスタム認証拡張機能で構成されています。

カスタム クレーム プロバイダーの構成の手順に従って、外部システムからのクレームをセキュリティ トークンに追加します。

次のステップ