メインコンテンツへスキップ
Auth0を使用すると、アプリケーションに手軽に認証を追加することができます。このガイドは、.NET AndroidまたはiOSアプリケーションにAndroidiOS用のAuth0 SDKを使ってAuth0を統合し、認証の追加とユーザープロファイル情報の表示を行う方法について説明します。
このクイックスタートは、Xamarin.AndroidXamarin.iOSの次世代である.NET AndroidとiOSについて説明します。現在、Xamarin.AndroidXamarin.iOSを使用している場合は、統合が同一でSDKにも互換性があるため、このガイドに従ってください。
このクイックスタートを使用するには、以下の手順に従います:
  • Auth0の無料アカウントにサインアップするか、Auth0にログインします。
  • 統合したいAndroidまたはiOSのプロジェクトで、.NET 6以降を使用したものを用意します。または、ログインした後に、サンプルアプリケーションを表示してダウンロードすることもできます。
    1

    Auth0を構成する

    Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、プロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。

    アプリケーションを構成する

    対話型のセレクターを使って「ネイティブアプリケーション」を新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。

    Callback URLを構成する

    Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。
    サンプルプロジェクトに沿って進めている場合は、プラットフォームに応じて、これを次のURLの1つに設定します:
    • AndroidYOUR_PACKAGE_NAME://{yourDomain}/android/YOUR_PACKAGE_NAME/callback
    • iOSYOUR_BUNDLE_ID://{yourDomain}/ios/YOUR_BUNDLE_ID/callback

    ログアウトURLを構成する

    ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。
    サンプルプロジェクトに沿って進めている場合は、プラットフォームに応じて、これを次のURLの1つに設定します:
    • AndroidYOUR_PACKAGE_NAME://{yourDomain}/android/YOUR_PACKAGE_NAME/callback
    • iOSYOUR_BUNDLE_ID://{yourDomain}/ios/YOUR_BUNDLE_ID/callback
    最後に、アプリケーションの**[Application Type(アプリケーションタイプ)]** が**[Native(ネイティブ)]** になっていることをアプリケーションの設定で必ず確認してください。
    2

    Auth0 SDKをインストールする

    .NET AndroidとiOSアプリケーションで、Auth0認証が手軽に実装できるように、Auth0はAndroidiOSのSDKを提供しています。NuGetパッケージマネージャ([Tools(ツール)] -> [Library Package Manager(ライブラリーパッケージマネージャー)] -> [Package Manager Console(パッケージマネージャーコンソール)])を使用して、AndroidまたはiOSアプリケーションのどちらをビルドするかに応じて、Auth0.OidcClient.AndroidXまたはAuth0.OidcClient.iOSパッケージをインストールします。NuGetパッケージマネージャーコンソール(Install-Package)やdotnet CLI(dotnet add)を代わりに使用することもできます。
    Install-Package Auth0.OidcClient.AndroidX
    Install-Package Auth0.OidcClient.iOS
    
    dotnet add Auth0.OidcClient.AndroidX
    dotnet add Auth0.OidcClient.iOS
    
    3

    Auth0Clientをインスタンス化する

    Auth0をアプリケーションに統合するには、Auth0のドメインとクライアントIDを含むAuth0ClientOptionsのインスタンスを渡して、Auth0Clientクラスをインスタンス化します。
    using Auth0.OidcClient;
    var client = new Auth0Client(new Auth0ClientOptions {
    Domain = "{yourDomain}",
    ClientId = "{yourClientId}"
    }, this);
    
    SDKは初期設定で、AndroidにはChrome Custom Tabs、iOSにはASWebAuthenticationSessionを利用します。
    チェックポイント
    Auth0Clientが適切にインスタンス化されました。アプリケーションを実行して次の点を確認します: Auth0ClientのインスタンスがActivity(Android)またはUIViewController(iOS)で正しく作成されている。 アプリケーションがAuth0に関連したエラーを投入していない。
    4

    Androidを構成する

    ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。Androidデバイスでコールバックを扱うには、Callback URLを扱うインテントを登録する必要があります。これを手軽に実現するには、認証フローをインスタンス化するためにLoginAsyncメソッドを呼び出したのと同じアクティビティーにインテントを登録します。必ず、サンプルコードにあるYOUR_ANDROID_PACKAGE_NAMEは実際のアプリケーションのパッケージ名(com.mycompany.myapplicationなど)で置き換えてください。また、DataSchemeDataHostDataPathPrefixのテキストがすべて小文字であることを確認してください。アクティビティーにはLaunchMode = LaunchMode.SingleTaskを設定します。設定しないと、Callback URLが呼び出されるたびに、システムがアクティビティーの新しいインスタンスを作成します。また、ActivityクラスにあるOnNewIntentイベントでインテントを扱う必要があります。ActivityMediatorシングルトンのSendメソッドを呼び出して受け取ったURLを渡し、Auth0のOIDCクライアントに認証フローを終わらせるよう通知する必要があります。
    protected override void OnNewIntent(Intent intent)
    {
    
        base.OnNewIntent(intent);
    
        ActivityMediator.Instance.Send(intent.DataString);
    
    }
    
    5

    iOSを構成する

    ユーザーが認証に成功すると、このクイックスタートで前にセットアップしたCallback URLへリダイレクトされます。iOSデバイスでコールバックを扱うには、以下を行います:
    1. アプリケーションのInfo.plistファイルをVisual Studioで開いて、[Advanced(詳細)] タブに移動します。
    2. [URL Types(URLタイプ)] にある**[Add URL Type(URLタイプの追加)]** ボタンをクリックします。
    3. 識別子 をAuth0、URLスキーマ をアプリケーションのバンドル識別子ロール[None(なし)]に設定します。
    これは、URLタイプを追加した後でXML表記されたinfo.plistファイルの例です:
    <key>CFBundleURLTypes</key>
    <array>
    <dict>
    <key>CFBundleTypeRole</key>
    <string>None</string>
    <key>CFBundleURLName</key>
    <string>Auth0</string>
    <key>CFBundleURLSchemes</key>
    <array>
    <string>YOUR_BUNDLE_IDENTIFIER</string>
    </array>
    </dict>
    </array>
    
    さらに、AppDelegateクラスにあるOpenUrlイベントでCallback URLを扱う必要があります。ActivityMediatorシングルトンのSendメソッドを呼び出して受け取ったURLを渡し、Auth0のOIDCクライアントに認証フローを終わらせるよう通知する必要があります。
    6

    アプリケーションにログインを追加する

    Auth0アプリケーションとAuth0 SDKの構成が完了したら、プロジェクトのためにログインをセットアップする必要があります。これを実現するには、SDKのLoginAsync()メソッドを使用して、ユーザーをAuth0のユニバーサルログインページにリダイレクトするログインボタンを作成します。
    var loginResult = await client.LoginAsync();
    
    エラーがなければ、LoginAsync()が返すLoginResultUserIdentityTokenAccessTokenRefreshTokenにアクセスすることができます。
    チェックポイント
    ユーザー名とパスワードを使ってログインやサインアップができるようになりました。 ログインボタンをクリックして次の点を確認します: AndroidまたはiOSアプリケーションによってAuth0のユニバーサルログインページにリダイレクトされる。 ログインまたはサインアップできる。 Auth0によってアプリケーションにリダイレクトされる。
    7

    アプリケーションにログアウトを追加する

    プロジェクトにログインしたユーザーには、ログアウトする方法も必要です。SDKのLogoutAsync()メソッドを使用してログアウトボタンを作成します。ユーザーはログアウトすると、Auth0ログアウトエンドポイントにリダイレクトされてから、即座に、このクイックスタートで先ほどセットアップしたログアウトURLにリダイレクトで戻されます。
    await client.LogoutAsync();
    
    チェックポイント
    アプリケーションを実行して、ログアウトボタンをクリックします。以下の点を確認します: AndroidまたはiOSアプリケーションによって、アプリケーションの設定で[Allowed Logout URLs(許可されているログアウトURL)]の1つに指定されているアドレスへリダイレクトされる。 アプリケーションにログインしていない。
    8

    ユーザープロファイル情報を表示する

    ユーザーがログインやログアウトできるようになったら、認証済のユーザーに関連付けられたプロファイル情報を取得できるようにしたいと考えるはずです。たとえば、ログインしたユーザーの名前やプロフィール写真をプロジェクトに表示したいかもしれません。AndroidまたはiOS用のAuth0 SDKでは、LoginResult.Userプロパティを通じてユーザー情報を提供します。
    if loginResult.IsError == false {
    var user = loginResult.User
    var name = user.FindFirst(c => c.Type == "name")?.Value
    var email = user.FindFirst(c => c.Type == "email")?.Value
    var picture = user.FindFirst(c => c.Type == "picture")?.Value
    }
    

次のステップ

成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。
  • Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
  • auth0-oidc-client-net SDK - このチュートリアルで使用されているSDKをより詳しく説明します
  • Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます
I