Azure AD B2C中的访问令牌

时间:2020-08-21 06:40:16

标签: xamarin access-token azure-ad-b2c

我们已按照https://github.com/Azure-Samples/active-directory-b2c-xamarin-native中提供的指南,将Xamarin应用程序示例与AAD B2C集成在一起。

我们现在不调用CallAPI方法。作为身份验证后的响应,我们只收到id_token而不是access_token。

我是否必须强制调用API以获取生成的访问令牌?我们不使用client_secret。

响应后身份验证是否不同时包含id_token和access_token?

1 个答案:

答案 0 :(得分:2)

这是用于以交互方式对用户进行签名的呼叫(source):

    private async Task<UserContext> SignInInteractively()
    {
        IEnumerable<IAccount> accounts = await _pca.GetAccountsAsync();

        AuthenticationResult authResult = await _pca.AcquireTokenInteractive(B2CConstants.Scopes)
            .WithAccount(GetAccountByPolicy(accounts, B2CConstants.PolicySignUpSignIn))
            .ExecuteAsync();

        var newContext = UpdateUserInfo(authResult);
        return newContext;
    }

如果存在有效的[scopes],并且按照here的说明进行配置(以下出于永久性而复制),那么您将同时获得id_tokenaccess_token。如果您没有提供适当的范围,则唯一的范围将是openid,并且仅返回id_token,因为没有资源来获取访问令牌。

[可选]步骤4:创建自己的Web API

此示例在https://fabrikamb2chello.azurewebsites.net处调用API,该API与示例Node.js Web API with Azure AD B2C具有相同的代码。您将需要自己的API,或者至少需要register a Web API with Azure AD B2C,以便可以定义单页应用程序将为其请求访问令牌的范围。

您的Web API注册应包括以下信息:

  • 为您的应用程序启用 Web应用程序/ Web API 设置。
  • 答复URL 设置为示例中指示的适当值,或者,如果您仅在进行Web api注册,例如https://myapi,则提供任何URL。
  • 确保您还提供了 AppID URI ,例如demoapi,这用于构造在单页应用程序的代码中配置的范围。
  • 创建应用程序后,打开应用程序的发布的范围边栏并使用read名称创建一个范围。
  • 复制 AppID URI Published Scope 值,以便您可以在应用程序的代码中输入它们。

[可选]步骤5:创建自己的本机应用

现在,您需要在B2C租户中注册本机应用程序,以便它具有自己的应用程序ID。不要忘记授予您的应用程序API访问上一步中注册的Web API的权限。

您的本机应用程序注册应包括以下信息:

  • 为您的应用程序启用本地客户端设置。
  • 创建应用后,打开应用的属性刀片,然后将应用的自定义重定向URI 设置为msal<Application Id>://auth
  • 创建应用后,打开应用的 API访问权限刀片并添加在上一步中创建的API。
  • 复制为您的应用程序生成的应用程序ID,以便您可以在下一步中使用它。