Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jwt OpenID连接用例_Jwt_Openid Connect - Fatal编程技术网

Jwt OpenID连接用例

Jwt OpenID连接用例,jwt,openid-connect,Jwt,Openid Connect,最近我发现了OpenIDConnect标准,现在我正在努力找出正确的使用方法 假设我正在构建一个相当标准的web应用程序,它必须具有经过身份验证的用户的概念。因此,我的第一个意图是用用户表构建一个本地数据库,其中包含用户id、电子邮件、名字和姓氏、密码、salt等。 这意味着我需要实现所有相关功能,如注册、登录、更改/忘记密码等 我没有这样做,而是选择使用OpenID连接并利用存储在别处(例如谷歌)的用户信息 然后我可以执行通常的OAuth2魔术来重定向用户、请求同意等等 从这一点开始,我有点失

最近我发现了OpenIDConnect标准,现在我正在努力找出正确的使用方法

假设我正在构建一个相当标准的web应用程序,它必须具有经过身份验证的用户的概念。因此,我的第一个意图是用用户表构建一个本地数据库,其中包含用户id、电子邮件、名字和姓氏、密码、salt等。 这意味着我需要实现所有相关功能,如注册、登录、更改/忘记密码等

我没有这样做,而是选择使用OpenID连接并利用存储在别处(例如谷歌)的用户信息

然后我可以执行通常的OAuth2魔术来重定向用户、请求同意等等

从这一点开始,我有点失去了轨道。在Google(或其他任何形式)返回到我的后端应用程序ID令牌和基本用户信息(电子邮件、姓名、电话)后 我该怎么处理它?我是否仍然需要从这些字段填充本地用户数据库(无密码)?在这种情况下,OpenID Connect只是一个奇特的自动注册过程?那个么会话和注销呢,若用户在谷歌网站上更改了他的手机,而我仍然保存着旧版本呢

我在网上读了很多OpenID Connect的文章,但它们似乎都描述了获取令牌的基本流程,所以我对进一步的阶段感到困惑


我非常感谢您对这些问题的任何提示/建议。

我同意您的看法,这些现代身份验证方案最有趣的方面是,您可以轻松地将身份验证委托给第三方提供商,而不必编写和支持所有样板文件,但是管理用户身份的高度敏感代码

关于你的问题,接下来会发生什么,让我们一个接一个地讨论这些问题;我会尽量不要在每个答案的开头都用它,这要看情况而定


Q1我是否仍需要从这些字段填充本地用户数据库(无密码)

这取决于您的应用程序,如果当用户不在线与应用程序交互时,您的应用程序不需要了解用户信息,那么您几乎不必存储任何内容。您最多希望将唯一的用户标识符存储到用户创建的数据中

另一方面,如果应用程序在发生(真正)有趣的事情时通过电子邮件通知用户,则需要将用户电子邮件存储在数据库中


Q2(如果我需要复制数据库中的几乎所有信息)OpenID Connect只是一个奇特的自动注册过程

某种程度上,仅仅是作为一个允许您将应用程序身份验证委托给第三方的标准,您已经从它的存在中获得了巨大的好处。身份验证不是一件小事,如果你能把它转移给其他人,那么就去做。通过这样做,您也在帮最终用户一个忙,因为(取决于您选择的提供商的受欢迎程度)他现在可以登录到您的应用程序,而无需记住另一组凭据


Q3会话和注销如何

这里没有实质性的变化,如果你想要一个独立的会议。在应用程序验证凭据并启动会话之前,现在它将验证可能由第三方提供的令牌,然后启动会话。注销将结束您的会话

如果您想要一个同步会话,这样用户只在您的应用程序中处于活动状态,而他在第三方提供商中也有一个会话,那么您有更多的工作要做。请参阅,如果您还没有这样做,了解更多信息


第4季度如果用户在谷歌网站上更改了手机,而我仍然保存了旧版本,该怎么办

这不是问题,因为如果您没有使用OpenID Connect,并且必须管理特定于应用程序的用户身份,那么您也会遇到同样的问题。用户会在谷歌上更换手机,除非他也在你的应用程序中主动更换手机,否则手机将过时

正如fiddur所指出的,如果有更新的信息,还可以主动向提供商查询。这是大多数提供商都支持的,并且附带的好处也可以为最终用户提供良好的用户体验


总之,如果您有机会将身份验证委托给外部提供商,请这样做。实现您自己的自定义身份验证,甚至将自己建立为一个符合所有可用标准的身份验证提供商,这是一个非常耗时的挑战,充满了安全隐患


如果您认为您需要比社交身份验证提供商更好地控制身份验证过程,那么您仍然可以选择更灵活的提供商,但我有偏见(我是Auth0工程师。这种类型的选项将为您提供更多的控制,同时仍然承担实施背部身份验证标准的负担。

Q2:它还为用户提供了单一登录机会,特别是如果更多的提供商也提供OpenID Connect动态注册。问题4:还可以选择定期从提供商处重新检查用户信息,这样用户就不必在所有站点上更新相同的信息。@fiddur,这是真的,对最终用户有很大好处。我将更新这两点,从用户的角度来说明这一点。谢谢,谢谢你们,现在它更有意义了。我想我只是没有从正确的角度看这个。