小编Ami*_*aus的帖子

使用 jwt 响应多个子域身份验证

我们希望使用相同的用户数据库和 Rest API 开发一些不同的服务(React Apps)。有些用户可能可以访问 APP 1,有些用户可以访问 APP 2,有些用户可以访问两者,具体取决于他们的角色。

  • 我们决定采用多个子域应用程序方法。

  • 我们希望 SSO 只用一个页面/应用程序来验证所有应用程序,而不是每个应用程序的本地登录组件。在我们的后端使用 JWT 机制。

结构:

在此输入图像描述


授权流程:

在此输入图像描述


该流程有两个主要问题,标记为 1 和 2:

  1. 假设我进入登录应用程序并登录,从后端获取 accestoken。如何将令牌传送到 app1.company.com?应该使用 url 参数中的 token 来反应登录 APP 重定向吗?

    • 本地存储是子域范围的。

    • iframe 在 Safari 中存在问题。

    • 我现在不想将 jwt 保存在 cookie 中,因为 Flask REST 可以为非浏览器零售客户端提供服务。


  1. 假设用户想要转到 app2。如果我们无法与 iframe 或任何其他方法共享 app1 的令牌,那么该应用程序应该重定向到登录并再次以 app1 的方式进行该过程,这对我们来说很好。但这真的是这样吗?如果令牌不再有效并且我们从后端收到错误,我们是否应该重定向到其他子域中的登录应用程序(嵌入我们想要在登录成功后返回的网址)?

    • 我可以只使用第 3 方 Open id 连接服务吗?

    • 我是否应该考虑微前端应用程序来使所有“应用程序”位于同一域上?

    • 以“Attlassian”为例,如何处理这个过程?


我缺少什么以及解决此流程的最佳方法是什么?

authentication subdomain jwt reactjs

5
推荐指数
1
解决办法
4404
查看次数

并行线程 python GIL 与 Java

我知道Python有一个GIL,它使得线程不能同时运行,因此线程只是上下文切换。

为什么java不一样?每种语言的同一 CPU 上的线程不能并行运行。

  1. 在java中创建新线程是否利用多核机器中的核心?

  2. 与 java 相比,python 只能在同一 CPU 上生成线程?

  3. 如果 1. 是这种情况,当使用比 CPU 更多的线程时,即使在 java 中,也会再次返回其中几个线程的上下文切换?

  4. 如果 1. 是这样的话,那么它与多处理有何不同?因为不能保证利用多个核心?

  5. 线程的全部意义不就是能够使用相同的内存空间吗?如果java确实在多个线程中运行其中一些以实现并行性,那么它们如何真正共享内存?

谢谢

python java parallel-processing multithreading gil

3
推荐指数
1
解决办法
813
查看次数