【问题标题】:Authenticate imported Azure AD user using Graph API使用 Graph API 对导入的 Azure AD 用户进行身份验证
【发布时间】:2024-04-18 07:40:01
【问题描述】:

我正在使用 Azure Graph API 从 Azure AD 获取所有用户信息。之后,我将这些用户添加到我的应用程序中。在登录页面中,我希望他们输入他们在 AD 中使用的用户名和密码。我不想将他们的密码存储在我的表中,但我想进行身份验证检查。 Graph API 中是否有执行此操作的休息服务?

【问题讨论】:

  • 在数据库中存储用户名/密码是个坏主意。一般方法是让应用程序将它们重定向到 Azure AD 进行身份验证,并让 Azure AD 返回包含有关用户的一些信息的声明。您可以将该信息存储在您的数据库中,以便在他们再次登录您的应用程序时识别他们。
  • 我没有将他们的密码存储在我的数据库中。我提供基于 SAML 的身份验证。此外,我想允许他们通过提供他们的凭据的正常登录页面登录。我不会把它存放在任何地方。我只想使用 Azure AD API 对他们进行身份验证。

标签: azure azure-ad-graph-api


【解决方案1】:

在登录页面中,我希望他们输入他们在 AD 中使用的用户名和密码。我不想将他们的密码存储在我的表中,但我想进行身份验证检查。 Graph API 中是否有执行此操作的休息服务?

这与 Graph API 的其余服务无关。它取决于您如何保护您的服务。

例如,微软提供受 Azure AD 保护的 Azure Graph API。并且 Azure AD 支持OAuth 2.0 获取访问令牌以访问受保护的资源。

在您描述的场景中,您可以考虑使用OAuth 2.0 代码授权流程。此流程的详细步骤请参见下图:

以下是使用此流程的代码示例供您参考:

active-directory-dotnet-graphapi-web

active-directory-dotnet-graphapi-console

【讨论】:

  • 我的登录门户要求输入用户名和密码。一旦他们提供了用户名,我就可以获得客户端 ID、租户 ID 和密钥(我用来创建访问令牌)。现在我可以使用此访问令牌连接到 Azure AD,这意味着我在配置期间提供的这三个字段是正确的,并且它是有效的 Oauth。我想对尝试使用 Azue AD 凭据登录我的应用程序的用户进行身份验证
  • @Jerry 你现在有什么问题吗?我无法理解您正在处理的问题。
  • 是的。我可以使用 OAuth 令牌从 Azure 目录导入用户。现在,当导入的用户尝试登录我的应用程序时,我想检查他们是否为其 azure AD 输入了正确的凭据。目前我正在调用此服务来获取用户密码配置文件并将密码与输入的密码进行比较。 graph.windows.net/%s/users/"+userName+"/…。这看起来不是正确的方法,而且我在此服务中将密码设为空
  • 根据我的理解,我们的应用程序不应该验证用户的密码。这是身份提供者 (Azure AD) 的责任。这对于用户在第三方应用程序上输入他们的 Azure AD 帐户凭据是不安全的。我们需要将 OP 重定向到 Azure AD 登录页面。 Here 是有关 Azure AD 身份验证方案的有用链接。
  • 如果我想在 AD 中获取他们的密码,我该如何获取呢?我正在调用 Graph API url 来获取完整的用户配置文件,其中一个对象是密码配置文件,但它总是给我空值。我是否必须为应用设置任何额外的权限?
最近更新 更多