PublicClientApplication class

此类用于获取公共客户端应用程序(桌面、移动版)的令牌。 公共客户端应用程序不受信任,无法安全地存储应用程序机密,因此只能请求用户名中的令牌。

扩展

构造函数

PublicClientApplication(Configuration)

用于身份验证的 Configuration 对象中的重要属性包括:

  • clientID:应用程序的应用程序 ID。 可以通过向应用程序注册门户注册应用程序来获取一个应用程序。
  • 颁发机构:应用程序的颁发机构 URL。

AAD当局的形式 https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}

  • 如果应用程序支持一个组织目录中的帐户,请将“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}/{tenant}/{policy}。 每个策略都被视为其自己的权威。 在客户端应用程序构造时,必须设置所有已知Authorities。

ADFS 颁发机构采用 https://{instance}/adfs 的形式。

方法

acquireTokenByDeviceCode(DeviceCodeRequest)

使用 OAuth2.0 设备代码流从颁发机构获取令牌。 此流专为无权访问浏览器或具有输入约束的设备而设计。 授权服务器使用验证码、最终用户代码和最终用户验证 URI 颁发 DeviceCode 对象。 DeviceCode 对象通过回调提供,应指示最终用户使用其他设备导航到验证 URI 以输入凭据。 由于客户端无法接收传入请求,因此它会重复轮询授权服务器,直到最终用户完成凭据输入。

acquireTokenInteractive(InteractiveRequest)

通过浏览器以交互方式获取令牌,方法是请求授权代码,然后将其交换给令牌。

acquireTokenSilent(SilentFlowRequest)

返回从缓存中检索的令牌,或通过交换刷新令牌以获取新的访问令牌。 如果启用中转站,令牌请求将由中转站提供服务。

getAllAccounts()

返回此应用程序的所有缓存帐户。 如果启用中转站,此请求将由中转站提供服务。

signOut(SignOutRequest)

删除与给定帐户关联的缓存项目

继承的方法

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

clearCache()

清除缓存

getAuthCodeUrl(AuthorizationUrlRequest)

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

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

getLogger()

返回记录器实例

getTokenCache()

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

setLogger(Logger)

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

构造函数详细信息

PublicClientApplication(Configuration)

用于身份验证的 Configuration 对象中的重要属性包括:

  • clientID:应用程序的应用程序 ID。 可以通过向应用程序注册门户注册应用程序来获取一个应用程序。
  • 颁发机构:应用程序的颁发机构 URL。

AAD当局的形式 https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}

  • 如果应用程序支持一个组织目录中的帐户,请将“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}/{tenant}/{policy}。 每个策略都被视为其自己的权威。 在客户端应用程序构造时,必须设置所有已知Authorities。

ADFS 颁发机构采用 https://{instance}/adfs 的形式。

new PublicClientApplication(configuration: Configuration)

参数

configuration
Configuration

方法详细信息

acquireTokenByDeviceCode(DeviceCodeRequest)

使用 OAuth2.0 设备代码流从颁发机构获取令牌。 此流专为无权访问浏览器或具有输入约束的设备而设计。 授权服务器使用验证码、最终用户代码和最终用户验证 URI 颁发 DeviceCode 对象。 DeviceCode 对象通过回调提供,应指示最终用户使用其他设备导航到验证 URI 以输入凭据。 由于客户端无法接收传入请求,因此它会重复轮询授权服务器,直到最终用户完成凭据输入。

function acquireTokenByDeviceCode(request: DeviceCodeRequest): Promise<null | AuthenticationResult>

参数

返回

Promise<null | AuthenticationResult>

acquireTokenInteractive(InteractiveRequest)

通过浏览器以交互方式获取令牌,方法是请求授权代码,然后将其交换给令牌。

function acquireTokenInteractive(request: InteractiveRequest): Promise<AuthenticationResult>

参数

返回

acquireTokenSilent(SilentFlowRequest)

返回从缓存中检索的令牌,或通过交换刷新令牌以获取新的访问令牌。 如果启用中转站,令牌请求将由中转站提供服务。

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

参数

request
SilentFlowRequest

开发人员提供了 SilentFlowRequest

返回

getAllAccounts()

返回此应用程序的所有缓存帐户。 如果启用中转站,此请求将由中转站提供服务。

function getAllAccounts(): Promise<AccountInfo[]>

返回

Promise<AccountInfo[]>

signOut(SignOutRequest)

删除与给定帐户关联的缓存项目

function signOut(request: SignOutRequest): Promise<void>

参数

request
SignOutRequest

开发人员提供的 SignOutRequest

返回

Promise<void>

继承的方法详细信息

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

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