你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

DeviceCodeCredential 类

  • java.lang.Object
    • com.azure.identity.DeviceCodeCredential

实现

public class DeviceCodeCredential
implements TokenCredential

设备代码身份验证是 Azure Active Directory (Azure AD) 提供的一种身份验证流,允许用户在没有 Web 浏览器或键盘的设备上登录到应用程序。 此身份验证方法对于智能电视、游戏控制台和物联网 (IoT) 设备特别有用,这些设备可能无法输入用户名和密码。 使用设备代码身份验证时,用户会看到设备上需要进行身份验证的设备代码。 然后,用户导航到单独设备上的 Web 浏览器,并在 Microsoft 登录页上输入代码。 用户输入代码后,Azure AD 会对其进行验证,并提示用户使用其凭据(例如用户名和密码或多重身份验证 (MFA) 方法)登录。 可以使用各种 Azure AD 支持的协议(例如 OAuth 2.0 和 OpenID Connect)启动设备代码身份验证,并且可以与各种 Azure AD 集成应用程序一起使用。 DeviceCodeCredential 以交互方式对用户进行身份验证,并在 UI 受限的设备上获取令牌。 它的工作方式是:在应用程序尝试进行身份验证时,提示用户在启用了浏览器的计算机上访问登录 URL。 然后,用户输入说明中提到的设备代码及其登录凭据。 身份验证成功后,请求身份验证的应用程序将在其运行的设备上成功进行身份验证。 有关详细信息,请参阅 设备代码身份验证文档

所需配置:

若要通过设备代码流对用户进行身份验证,请执行以下步骤:

  1. 转到 Azure 门户中的 Azure Active Directory,然后找到你的应用注册。
  2. 导航到“身份验证”部分。
  3. 在“建议的重定向 URI”下,检查以 /common/oauth2/nativeclient 结尾的 URI。
  4. 在“默认客户端类型”下,为“将应用程序视为公共客户端”选择“是” 。

这些步骤将使应用程序进行身份验证,但仍然没有权限让你登录到 Active Directory 或代表你访问资源。 若要解决此问题,请导航到“API 权限”,并启用 Microsoft Graph 和想要访问的资源,例如 Azure 服务管理、Key Vault 等。 首次登录时,你还需要成为租户的管理员才能同意你的申请。 如果无法在 Active Directory 上配置设备代码流选项,则可能需要你的应用为多租户应用。 若要使你的应用成为多租户应用,请导航到“身份验证”面板,然后选择“任何组织目录中的帐户” 。 然后,为“将应用程序作为公共客户端”选择“是”。

示例:构造 DeviceCodeCredential

下面的代码示例演示如何创建 DeviceCodeCredential,使用 DeviceCodeCredentialBuilder 对其进行配置。 默认情况下,凭据在命令行上打印设备代码质询,以替代该行为 challengeConsumer ,可以选择在 上 DeviceCodeCredentialBuilder指定 。 创建此凭据后,它可能会作为“credential”参数传递到许多 Azure SDK for Java 客户端生成器的生成器中。

TokenCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
     .build();

方法摘要

修饰符和类型 方法和描述
reactor.core.publisher.Mono<AuthenticationRecord> authenticate()

通过设备代码流对用户进行身份验证。

reactor.core.publisher.Mono<AuthenticationRecord> authenticate(TokenRequestContext request)

通过设备代码流对用户进行身份验证。

reactor.core.publisher.Mono<AccessToken> getToken(TokenRequestContext request)
AccessToken getTokenSync(TokenRequestContext request)

方法继承自 java.lang.Object

方法详细信息

authenticate

public Mono authenticate()

通过设备代码流对用户进行身份验证。

凭据从 Azure Active Directory 获取验证 URL 和代码。 用户必须浏览到 URL,输入代码,并使用 Azure Active Directory 进行身份验证。 如果用户身份验证成功,则凭据会收到访问令牌。

Returns:

AuthenticationRecord 它可用于在将来执行时对帐户进行无提示身份验证(如果在实例化凭据时通过 tokenCachePersistenceOptions(TokenCachePersistenceOptions tokenCachePersistenceOptions) 配置了永久性缓存)。

authenticate

public Mono authenticate(TokenRequestContext request)

通过设备代码流对用户进行身份验证。

凭据从 Azure Active Directory 获取验证 URL 和代码。 用户必须浏览到 URL,输入代码,并使用 Azure Active Directory 进行身份验证。 如果用户身份验证成功,则凭据会收到访问令牌。

Parameters:

request - 身份验证请求的详细信息。

Returns:

AuthenticationRecord 它可用于在将来执行时对帐户进行无提示身份验证(如果在实例化凭据时通过 tokenCachePersistenceOptions(TokenCachePersistenceOptions tokenCachePersistenceOptions) 配置了永久性缓存)。

getToken

public Mono getToken(TokenRequestContext request)

Parameters:

request

getTokenSync

public AccessToken getTokenSync(TokenRequestContext request)

Parameters:

request

适用于