ConfidentialClientApplication class

此类用于获取机密客户端应用程序(webApp、webAPI)的令牌。 机密客户端应用程序将配置应用程序机密、客户端证书/断言(如适用)

扩展

构造函数

ConfidentialClientApplication(Configuration)

ConfidentialClientApplication 的构造函数

Configuration 对象中的必需属性包括:

  • clientID:应用程序的应用程序 ID。 可以通过向应用程序注册门户注册应用程序来获取一个
  • 颁发机构:应用程序的颁发机构 URL。
  • 客户端凭据:必须为机密客户端设置客户端机密、证书或断言。 可以从应用程序注册门户获取客户端密码。

在 Azure AD 中,颁发机构是指示表单https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}的 URL。 如果应用程序支持一个组织目录中的帐户,请将“Enter_the_Tenant_Info_Here”值替换为租户 ID 或租户名称(例如,contoso.microsoft.com)。 如果应用程序支持任何组织目录中的帐户,请将“Enter_the_Tenant_Info_Here”值替换为组织。 如果应用程序支持任何组织目录中的帐户和个人Microsoft帐户,请将“Enter_the_Tenant_Info_Here”值替换为通用值。 若要仅限制对个人Microsoft帐户的支持,请将“Enter_the_Tenant_Info_Here”值替换为使用者。

在 Azure B2C 中,颁发机构的格式为 https://{instance}/tfp/{tenant}/{policyName}/完整 B2C 功能将在将来的版本在此库中提供。

方法

acquireTokenByClientCredential(ClientCredentialRequest)

从应用程序的颁发机构(而不是最终用户)获取令牌。

acquireTokenOnBehalfOf(OnBehalfOfRequest)

从应用程序的颁发机构获取令牌。

在当前应用是中间层服务的情况下使用表示最终用户的令牌调用的中间层服务。 当前应用可以使用令牌(oboAssertion)代表该用户请求另一个令牌来访问下游 Web API。

当前中间层应用没有用户交互来获得同意。 请参阅本文中,了解如何提前获得中间层应用的同意。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application

SetAppTokenProvider(IAppTokenProvider)

此扩展点仅适用于client_credential流,即 acquireTokenByClientCredential,旨在Azure SDK增强托管标识支持。

继承的方法

acquireTokenByCode(AuthorizationCodeRequest, AuthorizationCodePayload)

通过交换从 OAuth2.0 授权代码流的第一步收到的授权代码来获取令牌。

getAuthCodeUrl(AuthorizationCodeUrlRequest) 可用于为 OAuth2.0 授权代码流的第一步创建 URL。 确保 AuthorizationCodeUrlRequest 和 AuthorizationCodeRequest 中的 redirectUri 和作用域的值相同。

acquireTokenByRefreshToken(RefreshTokenRequest)

通过交换为一组新令牌提供的刷新令牌来获取令牌。

仅针对要从 ADAL 迁移到 MSAL 的方案提供此 API。 否则,建议用于 acquireTokenSilent() 无提示方案。 使用 acquireTokenSilent()时,MSAL 将自动处理令牌的缓存和刷新。

acquireTokenByUsernamePassword(UsernamePasswordRequest)

通过交换客户端应用程序用户名和密码获取凭据来获取密码授予的令牌

最新的 OAuth 2.0 安全最佳做法完全禁止授予密码。 有关此建议的更多详细信息,请参阅https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4Microsoft的文档和建议:https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword

acquireTokenSilent(SilentFlowRequest)

当用户指定请求令牌的帐户时,以无提示方式获取令牌。

此 API 要求用户提供帐户对象,并查看缓存以检索令牌(如果存在)。 还有一个可选的“forceRefresh”布尔值,用户可以发送以绕过access_token和id_token的缓存。 如果refresh_token已过期或未找到,将引发错误,指导是让用户调用任何交互式令牌获取 API(例如: acquireTokenByCode())。

clearCache()

清除缓存

getAuthCodeUrl(AuthorizationUrlRequest)

创建授权请求的 URL,让用户输入凭据并同意应用程序。 该 URL 面向应用程序对象中配置的颁发机构的 /authorize 终结点。

用户输入其凭据和同意后,颁发机构将向请求中发送的重定向 URI 发送响应,并应包含授权代码,然后可以使用该代码通过 acquireTokenByCode(AuthorizationCodeRequest)该代码获取令牌。

getLogger()

返回记录器实例

getTokenCache()

获取应用程序的令牌缓存。

setLogger(Logger)

将配置中的默认记录器集替换为新的记录器以及新配置

构造函数详细信息

ConfidentialClientApplication(Configuration)

ConfidentialClientApplication 的构造函数

Configuration 对象中的必需属性包括:

  • clientID:应用程序的应用程序 ID。 可以通过向应用程序注册门户注册应用程序来获取一个
  • 颁发机构:应用程序的颁发机构 URL。
  • 客户端凭据:必须为机密客户端设置客户端机密、证书或断言。 可以从应用程序注册门户获取客户端密码。

在 Azure AD 中,颁发机构是指示表单https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}的 URL。 如果应用程序支持一个组织目录中的帐户,请将“Enter_the_Tenant_Info_Here”值替换为租户 ID 或租户名称(例如,contoso.microsoft.com)。 如果应用程序支持任何组织目录中的帐户,请将“Enter_the_Tenant_Info_Here”值替换为组织。 如果应用程序支持任何组织目录中的帐户和个人Microsoft帐户,请将“Enter_the_Tenant_Info_Here”值替换为通用值。 若要仅限制对个人Microsoft帐户的支持,请将“Enter_the_Tenant_Info_Here”值替换为使用者。

在 Azure B2C 中,颁发机构的格式为 https://{instance}/tfp/{tenant}/{policyName}/完整 B2C 功能将在将来的版本在此库中提供。

new ConfidentialClientApplication(configuration: Configuration)

参数

configuration
Configuration

方法详细信息

acquireTokenByClientCredential(ClientCredentialRequest)

从应用程序的颁发机构(而不是最终用户)获取令牌。

function acquireTokenByClientCredential(request: ClientCredentialRequest): Promise<null | AuthenticationResult>

参数

返回

Promise<null | AuthenticationResult>

acquireTokenOnBehalfOf(OnBehalfOfRequest)

从应用程序的颁发机构获取令牌。

在当前应用是中间层服务的情况下使用表示最终用户的令牌调用的中间层服务。 当前应用可以使用令牌(oboAssertion)代表该用户请求另一个令牌来访问下游 Web API。

当前中间层应用没有用户交互来获得同意。 请参阅本文中,了解如何提前获得中间层应用的同意。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application

function acquireTokenOnBehalfOf(request: OnBehalfOfRequest): Promise<null | AuthenticationResult>

参数

返回

Promise<null | AuthenticationResult>

SetAppTokenProvider(IAppTokenProvider)

此扩展点仅适用于client_credential流,即 acquireTokenByClientCredential,旨在Azure SDK增强托管标识支持。

function SetAppTokenProvider(provider: IAppTokenProvider)

参数

继承的方法详细信息

acquireTokenByCode(AuthorizationCodeRequest, AuthorizationCodePayload)

通过交换从 OAuth2.0 授权代码流的第一步收到的授权代码来获取令牌。

getAuthCodeUrl(AuthorizationCodeUrlRequest) 可用于为 OAuth2.0 授权代码流的第一步创建 URL。 确保 AuthorizationCodeUrlRequest 和 AuthorizationCodeRequest 中的 redirectUri 和作用域的值相同。

function acquireTokenByCode(request: AuthorizationCodeRequest, authCodePayLoad?: AuthorizationCodePayload): Promise<AuthenticationResult>

参数

authCodePayLoad
AuthorizationCodePayload

返回

继承自ClientApplication.acquireTokenByCode

acquireTokenByRefreshToken(RefreshTokenRequest)

通过交换为一组新令牌提供的刷新令牌来获取令牌。

仅针对要从 ADAL 迁移到 MSAL 的方案提供此 API。 否则,建议用于 acquireTokenSilent() 无提示方案。 使用 acquireTokenSilent()时,MSAL 将自动处理令牌的缓存和刷新。

function acquireTokenByRefreshToken(request: RefreshTokenRequest): Promise<null | AuthenticationResult>

参数

返回

Promise<null | AuthenticationResult>

继承自ClientApplication.acquireTokenByRefreshToken

acquireTokenByUsernamePassword(UsernamePasswordRequest)

警告

现已弃用此 API。

  • Use a more secure flow instead

通过交换客户端应用程序用户名和密码获取凭据来获取密码授予的令牌

最新的 OAuth 2.0 安全最佳做法完全禁止授予密码。 有关此建议的更多详细信息,请参阅https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4Microsoft的文档和建议:https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword

function acquireTokenByUsernamePassword(request: UsernamePasswordRequest): Promise<null | AuthenticationResult>

参数

request
UsernamePasswordRequest

UsenamePasswordRequest

返回

Promise<null | AuthenticationResult>

继承自ClientApplication.acquireTokenByUsernamePassword

acquireTokenSilent(SilentFlowRequest)

当用户指定请求令牌的帐户时,以无提示方式获取令牌。

此 API 要求用户提供帐户对象,并查看缓存以检索令牌(如果存在)。 还有一个可选的“forceRefresh”布尔值,用户可以发送以绕过access_token和id_token的缓存。 如果refresh_token已过期或未找到,将引发错误,指导是让用户调用任何交互式令牌获取 API(例如: acquireTokenByCode())。

function acquireTokenSilent(request: SilentFlowRequest): Promise<AuthenticationResult>

参数

返回

继承自ClientApplication.acquireTokenSilent

clearCache()

清除缓存

function clearCache()

继承自ClientApplication.clearCache

getAuthCodeUrl(AuthorizationUrlRequest)

创建授权请求的 URL,让用户输入凭据并同意应用程序。 该 URL 面向应用程序对象中配置的颁发机构的 /authorize 终结点。

用户输入其凭据和同意后,颁发机构将向请求中发送的重定向 URI 发送响应,并应包含授权代码,然后可以使用该代码通过 acquireTokenByCode(AuthorizationCodeRequest)该代码获取令牌。

function getAuthCodeUrl(request: AuthorizationUrlRequest): Promise<string>

参数

返回

Promise<string>

继承自ClientApplication.getAuthCodeUrl

getLogger()

返回记录器实例

function getLogger(): Logger

返回

继承自ClientApplication.getLogger

getTokenCache()

获取应用程序的令牌缓存。

function getTokenCache(): TokenCache

返回

继承自ClientApplication.getTokenCache

setLogger(Logger)

将配置中的默认记录器集替换为新的记录器以及新配置

function setLogger(logger: Logger)

参数

logger
Logger

记录器实例

继承自ClientApplication.setLogger