租户 ID 在客户端凭据授予流程中是否始终保持不变?

Does the tenant ID stays always the same in the client credential grant flow?

我正在开发一个 ASP.NET MVC 应用程序,它必须访问 office365 APIs。我使用描述 here 来获取仅应用程序访问令牌。

现在,在 运行 应用程序之后,我进入 AAD 同意流程以获取令牌 ID,这样我就可以获得租户 ID。需要租户 ID 才能生成有效的访问令牌。

我现在的问题是:可以安全地将 tenantID 存储在数据库中并在我每次调用 api 获取访问令牌时使用它吗?还是tenantID会时常变化?它在我上次尝试时使用了相同的 tenantID,因为我只是在收到 tenantID 后更改了我的应用程序以不访问 azure AD 而只是进行一些 API 调用。

我的应用程序能否始终使用相同的 tenantId 来接收 access_token?

编辑:由于混淆,已将 "token" 更改为 tenantId。

tenantID 是附加到订阅的 Azure Active Directory 的 GUID。只要您不更改关联目录,tenantID 就不会更改。

当您说可以始终使用相同的 'token' 时,您指的是什么令牌?

在 Azure Active Directory (Azure AD) 中,租户代表一个组织。它是 Azure AD 服务的专用实例,组织在注册 Microsoft 云服务(例如 Azure、Microsoft Intune 或 Office 365)时接收并拥有它。每个 Azure AD 租户都与其他 Azure AD 租户不同且独立。

How to get an Azure Active Directory tenant

因此,您现有的 Azure AD 的租户 ID 不会更改。 只有当您创建新的 Azure AD 时,您才会为新的 AD 获得一个不同的租户 ID。

回答以下问题:

  1. 是的,您可以安全地将您的租户 ID 存储在数据库中,只要您始终只使用相同的 Azure AD

  2. 不是,上面已经解释了

  3. 是的。更准确地说,您的应用程序需要向 OAuth2 令牌颁发端点提供其客户端凭据,并在 return 中获取代表应用程序本身的访问令牌,而无需任何用户信息。

希望我的回答清晰易懂,帮助您解决问题。