小编rin*_*.io的帖子

没有url解码的Nginx pass_proxy子目录

我需要写一个nginx位置指令来代理请求子目录到另一个服务器保留urlencoding删除子目录前缀.

这是一个人为的例子 - 请求如下:

http://1.2.3.4/api/save/http%3A%2F%2Fexample.com

应该通过

http://abcd.com/save/http%3A%2F%2Fexample.com

我尝试了几种不同的方法.以下是其中几个:

  1. 这个SO问题

location /api/ { rewrite ^/api(/.*) $1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://abcd.com; } 但它解码了字符串,所以http://abcd.com得到/save/http://example.com

  1. 来自另一个SO问题

location /api/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://abcd.com; }

但它保留子目录,所以http://abcd.com得到/api/save/http%3A%2F%2Fexample.com.

需要的是中间的某个地方.谢谢!

UPD:这是nginx bug跟踪器中的一张

nginx

26
推荐指数
1
解决办法
1万
查看次数

基于浏览器的OAuth/OpenID,具有持久登录功能

我们有一个基于cookie的auth的常规Web应用程序,现在我们想要分割前端和后端(api)以便拥有第三方公共API.所以我们的后端将在一个域上并在另一个域上前端.

对于授权,我们希望使用JWT切换OAuth 2.在这种情况下,我们的前端应用程序将不得不使用access_token而不是cookie会话,它带来了一个很大的问题:

如何保持登录状态 - 臭名昭着的"记住我"复选框(来自基于表单的网站身份验证的第二部分)

从OAuth2的角度来看,我们的前端应用程序将在资源所有者密码凭据授予隐式授权之间使用某些东西.它更接近密码凭证授予,因为我们仍将使用通常的登录表单,并且不会将用户重定向到另一个域以便登录.同时它更接近隐式授权,因为它将全部仅限浏览器基于JavaScript的时间access_token将保存在浏览器中.

RFC 如果你使用隐式授权,授权服务器不能发出刷新令牌,而我的问题是,如果你没有真正使用3-d party OAuth而你自己的api,它在这个用例中是否仍然有效?本能地,我觉得refresh_token在浏览器中有一个安全漏洞,并想与你们确认,但这refresh_token似乎是持久登录工作方式与我们使用cookie一样的唯一方法.


@FlorentMorselli评论后的UPD:

如果我可以使用refresh_token仅浏览器应用程序,OpenID规范仍然无法回答我的问题

  • 谷歌表示他们refresh_token只提供access_type=offline
  • OpenID Connect Core 表示您无法使用带有隐式流的刷新令牌
  • ID连接核心任何关于使用refresh_token与混合流程
  • 只有一个地方可以说出refresh_token混合流动的一些前景,但并不精确

UPD2感谢@reallifelolcat

看起来OpenID Connect没有明确支持资源所有者密码凭据授权,这意味着您必须将用户重定向到OpenID Connect服务器才能执行登录.您是否知道是否有其他方法可以通过OAuth 2.0对用户凭据进行身份验证?


我相信分裂api和前端这些日子变得越来越普遍,如果你分享如何解决这个持久登录问题,如果你完全放弃并强迫用户每X周重新登录,我会很感激.

谢谢!

openid rest oauth oauth-2.0 jwt

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

骨干关系属于

如何使用骨干和骨干关系创建和使用属于(或多对一)关系?

backbone.js backbone-relational

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

标签 统计

backbone-relational ×1

backbone.js ×1

jwt ×1

nginx ×1

oauth ×1

oauth-2.0 ×1

openid ×1

rest ×1