Oauth 2.0 OpenID提供者如何认证最终用户?

Oauth 2.0 OpenID提供者如何认证最终用户?,oauth-2.0,openid-connect,openid-provider,Oauth 2.0,Openid Connect,Openid Provider,OpenID Connect 1.0使客户端能够基于授权服务器执行的身份验证来验证最终用户的身份,并提供访问令牌交换声明。访问令牌被提供给/user\u info或/me端点,以获得请求的声明作为回报 规范的这一部分解释了对最终用户进行身份验证的过程。但是,它明确指出 授权服务器用于验证最终用户身份的方法(例如用户名和密码、会话cookie等)超出了本规范的范围 这些方法的实施正是我的问题。另外,该规范也没有提供有关实现的任何信息 我的疑问是我们如何认证最终用户?我能想到的可能案例有: 我们在授

OpenID Connect 1.0使客户端能够基于授权服务器执行的身份验证来验证最终用户的身份,并提供访问令牌交换声明。访问令牌被提供给
/user\u info
/me
端点,以获得请求的声明作为回报

规范的这一部分解释了对最终用户进行身份验证的过程。但是,它明确指出

授权服务器用于验证最终用户身份的方法(例如用户名和密码、会话cookie等)超出了本规范的范围

这些方法的实施正是我的问题。另外,该规范也没有提供有关实现的任何信息

我的疑问是我们如何认证最终用户?我能想到的可能案例有:

  • 我们在授权服务器上保存一些用户数据,如其配置文件信息、用户名、密码以及资源服务器上的其他用户相关信息
  • 我们将所有内容都保存在资源服务器上,并通过向资源服务器上的内部RESTAPI发送
    POST
    请求以及用户凭据来验证用户凭据
  • 授权和资源服务器共享同一个DB实例,因此没有API调用
  • 我知道不同的OpenID提供者的实现会有所不同,但我想知道这些是否是任何OpenID提供者都遵循的方法

    在某些情况下,授权服务器和资源服务器可以相同,在这种情况下,共享数据库实例将变得很容易。但如果服务器是两台不同的机器,会发生什么呢

    假设我正在尝试编写自己的OpenId Connect实现。您会给我什么建议来验证最终用户的身份


    我试图遍历库的代码库,但库没有对用户进行身份验证,并跳过了该部分。如果有人能在这方面提供一些建议,那将是非常有帮助的。最佳实践应该是什么?任何其他OpenID提供程序都在使用什么方法?

    从关于

    由于身份验证及其要求是通过完全不同的方式实现的,因此明确说明身份验证机制超出范围是有原因的。这完全可以通过您选择的任何类型的身份验证机制来完成,唯一的要求是身份验证实现对OpenID/OAuth请求的正确响应

    假设您想让页面根据Active Directory进行身份验证。您所要做的就是使用适当的OAuth和OpenID插件(假设有)扩展现有的Active Directory系统,配置它们,在这些协议可用于身份验证和授权后,您可以将AD指定为OpenID/OAuth提供程序,提供给准备接受它们的人

    早在OpenID早期,LiveJournal等网站第一次允许任意OpenID提供者进行身份验证,为了测试这一想法,我在我的hobby Web服务器上制作了一个模拟OpenID页面,该页面仅具有足够的OpenID支持,可以根据我在那里手动指定的密码对单个用户进行身份验证。效果不错,但可能是一个极端的例子。如今,使用Google OpenID connect或类似工具进行集中配置文件管理变得更容易

    在何处存储授权信息的问题同样非常模糊,但通常将其存储在所使用的身份验证机制附近是有意义的,因为您正在使用此身份验证机制进行授权,因此,跟踪使用此特定身份验证授权的内容是有意义的

    注意,OAuth允许经过身份验证的用户坐在驾驶座上,这通常是公共WebApp的情况

    在非公共资源的情况下,资源持有者通常只订阅OpenID或其他联合身份条款,但会根据用户的来源和/或在特定身份方案中的身份自行决定用户可以访问哪些资源


    例如,大学A图书馆系统可能允许大学B的学生基于B的联邦身份验证服务器登录,但不授予他们与自己的学生通过大学A认证系统进行认证相同的图书馆权利。

    如您所知,用户身份验证完全超出OpenID Connect或OAuth的范围。所以你基本上可以随心所欲,这正是我要问的。我怎么做?最佳实践是什么?在实现它时,我需要考虑哪些事情?好吧,因为它与OpenID Connect或OAuth无关,所以您的问题基本上变成了“如何对用户进行身份验证?”,这有点宽泛。不过有一件事:在资源服务器上实现身份验证完全违背了使用OpenID Connect的目的。因此,这就取消了第二点,即使用RESTAPI在资源服务器上进行身份验证。