Как сделать ClientID переменной в приложении MAUI Blazor MSAL?

Я пишу гибридное приложение MAUI Blazor, использующее MSAL для аутентификации с клиентом B2C. У меня он работает в нашей среде разработки с идентификатором ClientId приложения Azure B2C, который используется в двух местах.

Сначала создайте клиентский объект MSAL:

      authenticationClient = PublicClientApplicationBuilder.Create(mauiAuthenticationConstants.ClientId)
            .WithB2CAuthority(mauiAuthenticationConstants.AuthoritySignIn)
            .WithTenantId(mauiAuthenticationConstants.TenantId)
            .WithRedirectUri($"msal{mauiAuthenticationConstants.ClientId}://auth")
            .WithClientId(mauiAuthenticationConstants.ClientId)
            .Build();

А во-вторых, чтобы настроить намерение Android в манифесте:

      <activity android:name="microsoft.identity.client.BrowserTabActivity" android:configChanges="orientation|screenSize" android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="msal[**REPLACE THIS WITH THE CLIENT ID OF YOUR APP**]" android:host="auth" />
      </intent-filter>
    </activity>

У нас будут отдельные среды Azure для каждого из наших клиентов, поэтому приложение будет иметь разные идентификаторы клиентов в каждом из них.

Нам нужно иметь возможность разместить приложение в магазине Google, и после его загрузки пройти процесс инициализации, в ходе которого переменные B2C, включая идентификатор клиента, извлекаются из центральной базы данных и сохраняются в локальном безопасном хранилище.

Я вижу, как установить идентификатор клиента в коде, но как заменить идентификатор клиента в AndroidManifest.xml?

С уважением, Брайан

1 ответ

Я нашел ответ на этот вопрос.

По сути, вам нужно использовать собственный Uri перенаправления, который содержит глобально уникальную строку.

В Azure добавьте новый уникальный URI перенаправления в раздел приложений для мобильных и настольных компьютеров, используя схему формата://auth (например, com.contosa.app://auth).

Примечание! Мне пришлось подождать больше часа, чтобы это сохранить и распространить, поэтому я подумал, что это не работает!

В коде при создании PublicClientApplicationBuilder используйте

.WithRedirectUri("com.contosa.app://auth")

и добавьте это в AndroidManifest, используя:

<data android:scheme="com.contosa.app" android:host="auth" />

Затем идентификатор клиента отделяется от URL-адреса перенаправления, и теперь его можно назначать динамически во время выполнения.

С уважением Брайан

Другие вопросы по тегам