【问题标题】:Authentication provider and OAuth身份验证提供程序和 OAuth
【发布时间】:2015-05-25 12:30:18
【问题描述】:

我可以运行自己的身份验证提供程序(即基于 OpenId)并让用户使用 OAuth 对其进行身份验证吗?提供商将作为多个 Web 应用程序的 SSO 点提供服务。

这样做的原因是,我的所有 webapps 只需要一个 applicationID(来自每个支持的 OAuth 提供程序)。提供者将提供 JSON 安全令牌,用于安全访问。

更新 我将添加用例示例

  1. 用户想要登录我的一些 web 应用
  2. 用户被重定向到我的身份提供者
  3. 用户选择他想要登录的方式(密码,或一些 OAuth 提供者)
    • 在名称/密码的情况下,我的 ID 提供者将只进行身份验证、授权和生成用户可以使用的安全令牌
    • 如果用户选择 OAuth 登录,他将遵循正常的 OAuth 流程,该流程将由 OAuth 提供商验证用户身份,然后在完成后重定向回我的 ID 提供商,这将生成用户可以使用的安全令牌
  4. 用户可以使用令牌向我的所有 web 应用证明自己
  5. webapps 将根据我的 ID 提供者验证用户令牌

将通过某种方式将来自不同提供商的相同用户帐户连接在一起。

【问题讨论】:

    标签: java security oauth openid


    【解决方案1】:

    可以,例如,看看 Thinktecture 的 IdentityServer

    但要做您想做的事,您不需要运行自己的 OpenID Connect 提供程序。例如,您可以使用现有的解决方案,例如 Azure Active Directory

    更新:从您的 cmets 看来,您确实在寻找联合提供商。看看 Azure 访问控制服务,它作为身份提供者与谷歌集成:https://msdn.microsoft.com/en-us/library/azure/gg185929.aspx

    【讨论】:

    • 它如何与这个 OpenID 提供程序一起工作。我的应用程序只知道 OpenID 提供程序,并且该提供程序已由所有 OAuth 提供程序注册?我还没有找到任何示例,您可以如何使用 Google OAuth 对某些 OpenID 提供程序进行授权。也许我只是个坏侦探。还有一点是我来自java世界,但希望java能有类似的解决方案。
    • OpenID Connect 和 OAuth 是标准化协议,因此与平台无关。如果您想使用 Google 的 OAuth 提供程序,您需要向 Google 注册您的应用程序(因为他们将为您的应用程序进行身份验证)。
    • 这是我想要避免的。我只想注册我的自定义身份提供者。 Web 应用程序应该以某种方式隐藏在它后面。我在我的问题中添加了用例。
    • 用 ACS 信息更新我的答案
    • 我会调查联邦提供者。恐怕它看起来真的很重量级。我没提,但肯定也是免费的。
    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 2017-12-25
    • 2015-08-24
    • 2013-07-30
    • 2020-09-28
    • 2011-02-25
    • 2017-08-19
    • 2018-08-26
    相关资源
    最近更新 更多