Angular.js中基于OpenID的身份验证(带有Flask后端)

如何在Angular.js(使用Flask后端Web应用程序)中实现基于OpenID的身份验证?

看起来Angular.js代码需要像这里的示例一样包含逻辑

但是,烧瓶端也应具有OpenID验证机制。
是否有“推荐”方式为后端和前端编写逻辑?
是否有github示例或其他相关资源供初学者使用?

米格尔

不幸的是,我没有共享的示例应用程序,但是这里有一个高级描述,希望对您有用。

让我们暂时忘记您拥有AngularJS应用,并回顾一下OpenID身份验证交换的工作方式:

  1. 用户以登录形式输入OpenID URL并提交到服务器
  2. 服务器获取OpenID URL,并以重定向到OpenID提供程序的方式进行响应。重定向包含一些参数,包括回调URL。
  3. OpenID提供程序提示用户输入登录凭据,然后允许与服务器应用程序共享其标识。
  4. OpenID提供程序以步骤2中作为回调提供的URL的重定向返回到应用程序,并向其提供有关用户的信息,例如ID,电子邮件,用户名等。
  5. 服务器现在具有用户信息,并且可以通过唯一ID,电子邮件地址或其他一些标识在其自己的用户数据库中找到用户。此时,如果应用程序不认识该用户,则可以创建一个新帐户。
  6. 现在已经知道了用户,服务器可以编写一个cookie来记录他/她的身份,但是请注意,这是与步骤5中的身份不同的身份。OpenID提供者返回的身份信息对于定位用户很有用。在您自己的数据库中,因此现在您可以在应用程序的上下文中记录用户的标识。这可以是数据库用户ID,电子邮件地址或用户名(如果它们是唯一的)或令牌,可以是您拥有的有关该用户的某些信息的哈希。
  7. 使用cookie编写的每个发送到服务器的新请求都带有标识身份验证用户的数据。

因此,让我们看看将AngularJS添加到混合中时会发生什么。请注意,有很多方法可以做到这一点,我在下面描述的是一种可能性。

如果Angular应用程序向服务器发出要求身份验证的请求,则服务器应返回错误代码401。例如,Angular应用程序在获得401时可以弹出登录表单。

但是,在丰富的JS应用程序上下文中,OpenID身份验证操作无法全部完成,因为它需要浏览器重定向。您的服务器端应用程序将必须至少支持三种路由:

  • 用于Angular应用程序的根URL
  • 启动OpenID身份验证的URL
  • 作为回调发送到OpenID提供程序的URL

因此,用户连接到您的根URL并获取AngularJS应用,该应用以未认证状态启动。在某个时候,Angular应用程序将使用带有OpenID文本字段和提交按钮的表单提示用户登录。这些表单字段应该是发布到服务器的常规HTML表单的一部分,而不是附加到控制器的客户端Angular元素。表单的“操作”属性应指向服务器的OpenID登录路由。

当用户单击登录按钮时,服务器将唤醒并接收启动OpenID身份验证的请求。此时,上面的步骤1-5将保持不变。

在第5步结束时,服务器已将用户定位在应用程序的数据库中。服务器现在可以做的是通过重定向回到根URL来响应,以重新启动Angular应用程序。如果应用需要在非初始状态下重新启动,则可以在开始OpenID身份验证过程之前将要还原的状态保存在客户端存储(例如cookie)中。

但这还不够,服务器还需要向Angular传递一些有关登录用户的信息。一种方法是在重定向URL的查询字符串中附加用户的唯一ID或令牌,Angular应用程序可以访问。这与在上面的步骤6中进入cookie的ID是相同的。

现在,Angular应用程序已重新启动,可以在必要时恢复其状态,并具有标识登录用户的ID或令牌。当应用程序需要向服务器发出Ajax请求时,它将与请求一起发送此ID或令牌。服务器可以对其进行验证,如果发现无效或具有到期日期且已到期,则返回401。

如果随请求一起发送的标识被验证,则可以执行请求,并将响应发送回Angular应用。

只需通过删除用户ID /令牌即可在客户端实现注销功能,以便将来再次向服务器发送请求而无需再次进行身份验证。

非常重要:Angular应用程序与Flask服务器之间所有包含用户信息的交换都必须通过安全的HTTP进行。否则,您的ID或令牌将以纯文本格式传输。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有身份验证的django和angular.js

来自分类Dev

带有子路由的Angular 2身份验证

来自分类Dev

带有CouchDB Cookie身份验证的Angular 401

来自分类Dev

使用Angular.js-如何从需要身份验证的后端提供二进制数据?

来自分类Dev

Django,Angular和DRF:Django后端与API的身份验证

来自分类Dev

带有asp.net Core 3.1后端的Angular SPA中的OpenID Connect

来自分类Dev

Angular 2中的身份验证流程

来自分类Dev

Angular2 + Web API +基于令牌的身份验证

来自分类Dev

带有HTTP请求和Observable的Angular2身份验证防护

来自分类Dev

Laravel Sanctum auth:带有Angular SPA的Sanctum中间件未经身份验证的响应

来自分类Dev

带有 Web API 承载身份验证的 Angular 一直失败

来自分类Dev

带有令牌的 Angular 6 Firebase 自定义身份验证

来自分类Dev

带有自定义用户数据的 Angular Firebase Google 身份验证

来自分类Dev

password.js中的身份验证,与angular js一起使用

来自分类Dev

Angular.js,如何检查控制器中的身份验证服务

来自分类Dev

Django Rest Framework + Angular.js Web应用程序中的用户身份验证

来自分类Dev

渲染Angular js中的注册表单被身份验证阻止

来自分类Dev

Angular JS SSL客户端身份验证

来自分类Dev

Angular JS +用户身份验证+页面刷新

来自分类Dev

Angular auth.guard 没有持久身份验证

来自分类Dev

Angular中的JWT身份验证-多个身份验证级别

来自分类Dev

Angular2前端和.NET Core后端身份验证/帐户系统

来自分类Dev

Angular 2 前端 django 2 REST 框架后端用户身份验证

来自分类Dev

如何在angular 2中进行身份验证

来自分类Dev

Angular 2中的身份验证,处理可观察对象

来自分类Dev

Angular 2中的Firebase身份验证即服务

来自分类Dev

确保在Angular中对用户进行身份验证

来自分类Dev

Angular 2中的身份验证,处理可观察对象

来自分类Dev

Angular 2or中的登录身份验证问题

Related 相关文章

  1. 1

    带有身份验证的django和angular.js

  2. 2

    带有子路由的Angular 2身份验证

  3. 3

    带有CouchDB Cookie身份验证的Angular 401

  4. 4

    使用Angular.js-如何从需要身份验证的后端提供二进制数据?

  5. 5

    Django,Angular和DRF:Django后端与API的身份验证

  6. 6

    带有asp.net Core 3.1后端的Angular SPA中的OpenID Connect

  7. 7

    Angular 2中的身份验证流程

  8. 8

    Angular2 + Web API +基于令牌的身份验证

  9. 9

    带有HTTP请求和Observable的Angular2身份验证防护

  10. 10

    Laravel Sanctum auth:带有Angular SPA的Sanctum中间件未经身份验证的响应

  11. 11

    带有 Web API 承载身份验证的 Angular 一直失败

  12. 12

    带有令牌的 Angular 6 Firebase 自定义身份验证

  13. 13

    带有自定义用户数据的 Angular Firebase Google 身份验证

  14. 14

    password.js中的身份验证,与angular js一起使用

  15. 15

    Angular.js,如何检查控制器中的身份验证服务

  16. 16

    Django Rest Framework + Angular.js Web应用程序中的用户身份验证

  17. 17

    渲染Angular js中的注册表单被身份验证阻止

  18. 18

    Angular JS SSL客户端身份验证

  19. 19

    Angular JS +用户身份验证+页面刷新

  20. 20

    Angular auth.guard 没有持久身份验证

  21. 21

    Angular中的JWT身份验证-多个身份验证级别

  22. 22

    Angular2前端和.NET Core后端身份验证/帐户系统

  23. 23

    Angular 2 前端 django 2 REST 框架后端用户身份验证

  24. 24

    如何在angular 2中进行身份验证

  25. 25

    Angular 2中的身份验证,处理可观察对象

  26. 26

    Angular 2中的Firebase身份验证即服务

  27. 27

    确保在Angular中对用户进行身份验证

  28. 28

    Angular 2中的身份验证,处理可观察对象

  29. 29

    Angular 2or中的登录身份验证问题

热门标签

归档