【问题标题】:Azure AD Authenticate from API with username/pw - no UI, is there an example?Azure AD 使用用户名/密码从 API 进行身份验证 - 没有 UI,有示例吗?
【发布时间】:2020-01-23 17:30:10
【问题描述】:

我正在尝试设置一个 .net 核心 API,该 API 可以被赋予用户名/密码,并使用这些凭据向 Azure AD 进行身份验证,并将 JWT 返回给用户以供将来请求。这一切都需要在“幕后”进行,但我可以在 Microsoft 文档中找到的每个示例都涉及一些界面。

我发现了一个带有 Web api 的示例,该示例将您重定向到浏览器中的登录页面,还有一个控制台应用程序示例直接进入 Azure AD(因此它需要其中的 Azure 信息)然后获取一个令牌对于单独的 API。我不希望 API 的使用者需要任何 Azure 信息,他们只需要他们的用户/密码凭据。

在此设置结束时,我应该能够使用 Postman 使用用户名/密码访问我自己的 API,API 与 Azure 对话,进行身份验证,将 JWT 返回给我的 API,然后我将其传回给用户。用户将该 JWT 用于将来对 API 的请求。我还没有找到这样的样本:(

API 已经支持将 Web 界面重定向到 Azure 登录页面工作流,我正在将它用于一个 react 应用程序,并且一切都很好地连接起来,但现在我需要支持使用 API 的其他服务。谢谢!

【问题讨论】:

    标签: c# azure authentication asp.net-core azure-active-directory


    【解决方案1】:

    这称为资源所有者密码凭据授予流程。 Azure AD 支持它,但强烈建议不要使用它。 有关 api 参考,请参阅 docs。 还有一个小例子here

    【讨论】:

    • 这是完美的,我可能会使用它,因为用例似乎很合适。但以防万一,外部服务是否可以通过其他方式向 Azure AD 进行身份验证,而无需所有 Azure 租户详细信息?
    • 当然,Azure AD 完美支持 OpenId Connect。它基于浏览器,因此不适合您当前的需求。今天发布的 Asp.net Core 3,集成了 Identity Server,所以你应该可以毫无问题地实现这个流程。
    • 不幸的是,我需要一个不基于浏览器的解决方案。如果我不能用邮递员来做,那它就不能真正满足需要。
    • 那么 ROPC 就是您的解决方案
    • @Alex,您可以使用 this sample 来帮助您使用 Client Credential Flow 实现您所需要的。
    猜你喜欢
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2021-05-16
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多