初始化客户端应用程序

已完成

使用 MSAL.NET 3.x 时,建议使用应用程序生成器 PublicClientApplicationBuilderConfidentialClientApplicationBuilder 来实例化应用程序。 它们提供一种功能强大的机制,可以通过代码或配置文件,或者甚至通过这两种方式并用,来配置应用程序。

初始化应用程序之前,需要先注册,以便你的应用可以与 Microsoft 标识平台集成。 注册后,可能需要以下信息(可在 Azure 门户中找到):

  • 应用程序(客户端)ID - 这是表示 GUID 的字符串
  • 目录(租户)ID - 为组织使用的应用程序和资源提供标识和访问管理 (IAM) 功能。 它可以指定你是否仅为组织编写业务线应用程序(也称为单租户应用程序)。
  • 标识提供者 URL(称为实例)以及你的应用程序的登录受众。 这两个参数统称为机构。
  • 客户端凭据 - 如果是机密客户端应用,可以是应用程序机密(客户端机密字符串)形式,也可以是证书( 类型)形式X509Certificate2
  • 对于 Web 应用,有时也包括公共客户端应用(特别是当你的应用需要使用中转站时),还需要设置“重定向 URI”,标识提供者会将安全令牌发回给你的应用程序。

从代码初始化公共和机密客户端应用程序

以下代码实例化公共客户端应用程序,让用户通过其工作和学校帐户或其个人 Microsoft 帐户在 Microsoft Azure 公有云中登录。

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId).Build();

以下代码以相同的方式实例化一个机密应用程序(位于 https://myapp.azurewebsites.net 上的 Web 应用),该应用程序可以使用工作和学校帐户或个人 Microsoft 帐户处理 Microsoft Azure 公有云中用户的令牌。 标识提供者通过共享客户端机密标识该应用程序:

string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithRedirectUri(redirectUri )
    .Build();

生成器修饰符

在使用应用程序生成器的代码片段中,可将 .With 方法应用为修饰符(例如 .WithAuthority.WithRedirectUri)。

  • .WithAuthority 修饰符:.WithAuthority 修饰符将应用程序默认授权设置为 Microsoft Entra 授权,可以选择 Azure 云、受众、租户(租户 ID 或域名)或直接提供授权 URI。

    IPublicClientApplication app;
    app = PublicClientApplicationBuilder.Create(clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
        .Build();
    
  • .WithRedirectUri 修饰符:.WithRedirectUri 修饰符替代默认重定向 URI。

    IPublicClientApplication app;
    app = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .WithRedirectUri("http://localhost")
        .Build();
    

公共和机密客户端应用程序通用的修饰符

下表列出了可以在公共客户端或机密客户端上设置的一些修饰符。

修饰符 描述
.WithAuthority() 将应用程序默认授权设置为 Microsoft Entra 授权,可以选择 Azure 云、受众、租户(租户 ID 或域名)或直接提供授权 URI。
.WithTenantId(string tenantId) 替代租户 ID 或租户说明。
.WithClientId(string) 替代客户端 ID。
.WithRedirectUri(string redirectUri) 替代默认的重定向 URI。 这对需要中转站的场景很有用。
.WithComponent(string) 使用 MSAL.NET 设置库的名称(出于遥测原因)。
.WithDebugLoggingCallback() 如果被调用,应用程序将调用 Debug.Write,目的只是启用调试跟踪。
.WithLogging() 如果被调用,应用程序将调用带有调试跟踪的回叫。
.WithTelemetry(TelemetryCallback telemetryCallback) 设置用于发送遥测的代理。

专用于机密客户端应用程序的修饰符

可以在 ConfidentialClientApplicationBuilder 类中找到特定于机密客户端应用程序生成器的修饰符。 可以在 适用于 .NET 的 Azure SDK 文档中找到不同的方法。

诸如 .WithCertificate(X509Certificate2 certificate).WithClientSecret(string clientSecret) 之类的修饰符是相互排斥的。 如果同时提供这两者,MSAL 会引发有意义的异常。