【问题标题】:How to validate azure active directory user credentials?如何验证 azure Active Directory 用户凭据?
【发布时间】:2013-04-15 00:46:12
【问题描述】:

我在 azure 活动目录中有一组用户;在我的程序中,我将收集最终用户的用户名和密码,并希望检查 windows azure 活动目录。

有可能吗?请提供一些参考。

我知道我们可以使用 Power-shell cmdlet 进行验证;我想知道是否有任何其他方法可以验证用户凭据。

【问题讨论】:

  • 你想要完成什么?您能否描述您的身份验证和授权方案的更高级别设计。根据您的描述,听起来您正在尝试一些相当不安全和“顽皮”的事情。您是否有理由不在依赖方应用程序中使用基于声明的身份验证并让 Windows azure Active Directory (WAAD) 处理身份验证?
  • 在我为大型公司部署的大多数应用程序中,我们都让本地 AD 作为身份验证源,我期待着弄清楚 Azure AD 如何在我的云中替换它应用程序。如果不需要,我宁愿不编写身份验证代码,让 WAAD 为我处理所有这些,因为我专注于授权如何应用于我的应用程序逻辑。
  • 你有没有找到解决方案。我也在尝试做同样的事情?

标签: api authentication azure office365 azure-active-directory


【解决方案1】:

啊,我想,您正在尝试实现 SSO 场景。试试Adding Sign-On to Your Web Application Using Windows Azure AD! 如果您的客户没有 Azure 订阅,此 Multi-Tenant Cloud Application for Windows Azure Active Directory 示例描述了使用 Azure Active Directory 身份验证库的详细信息。希望这会有所帮助。

【讨论】:

  • 您的链接很有用。但是从开发人员的角度来看,我会更有兴趣找到一种方法,我已经拥有用户名/域/密码等。所以我不想打开浏览器窗口让用户这样做(现在就是这样)。当我们已经掌握了所有详细信息时,如何执行 WAAD 身份验证?目前我们使用的是AuthenticationContext.AcquireToken(resource, client-id, resource-app-id-uri),但是如何使用AuthenticationContext.AcquireToken(resource, ClientCredential)呢?
  • 您的this 链接提供了代码示例,但不确定这是否适用。我不确定如何使用clientSecret 部分来创建ClientCredential
【解决方案2】:

您说您“将收集最终用户的用户名和密码,并希望使用 windows azure 活动目录进行检查” - 我很确定这是不可能的,而且我确信这是不可取的。这与 OAuth 等方法的趋势相反,在这种方法中,用户可以使用相同的凭据登录许多应用程序(即将出现的部分很关键),而无需向那些“许多应用程序”透露他们的密码。

这是联合身份验证的理念,它比允许您登录的所有应用程序直接访问您的用户名和密码的旧方法更安全。通常在这样的流程中,假设现有 Office 365 帐户,您创建并配置为使用 O365 进行身份验证的新应用程序会将用户的 Web 浏览器重定向到 O365,用户在其中键入其 O365 用户名和密码,然后同意(有一次)他们可以与这个新应用程序一起使用,然后浏览器将重定向回应用程序,并带有一个包含一些声明的安全令牌。这些声明将包括登录用户的姓名、电子邮件地址和其他信息,旨在足以识别您应用中的用户。

使用 Facebook 或 Google 进行身份验证也是如此 - 您的应用永远不会直接看到用户的密码。它甚至适用于登录 StackOverflow 本身,因此您已经了解了工作流程。

【讨论】:

    【解决方案3】:

    希望这个 ADAL 选项也可能有所帮助。

    ClientCredential encryptedCredentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "UserX@AdX.OnMicrosoft.com", "PasswordX")));
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encryptedCredentials);
    

    【讨论】:

      【解决方案4】:

      如果有人仍在寻找答案。 在 ADAL 版本 2.7.10707.1513-rc 中,通过将类 UserCredential 的对象提供给 AcquireToken 的重载函数,支持在不为用户凭据打开新窗口的情况下验证用户。

      public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential);
      

      这是一个 powershell 的示例代码。 $UserCred = new-object Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential("****@*****", "*****") $result = $AuthContext.AcquireToken($resource,$clientID,$UserCred)

      【讨论】:

      • 这仅适用于本机客户端 - 不适用于 Web 应用程序。
      猜你喜欢
      • 2011-10-30
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2015-11-15
      相关资源
      最近更新 更多