【发布时间】:2015-06-05 08:57:56
【问题描述】:
我已经创建了 jhipster 演示应用程序,并想使用 postman 之类的工具检查我改编后的 rest api。我尝试过使用基本身份验证,用户和密码都设置为管理员、用户或系统。但是他们都不能访问,得到一个 401。
如果您能给我一个提示如何访问它,那就太好了。
干杯 马库斯
【问题讨论】:
我已经创建了 jhipster 演示应用程序,并想使用 postman 之类的工具检查我改编后的 rest api。我尝试过使用基本身份验证,用户和密码都设置为管理员、用户或系统。但是他们都不能访问,得到一个 401。
如果您能给我一个提示如何访问它,那就太好了。
干杯 马库斯
【问题讨论】:
只是一个猜测,但演示应用程序使用 cookie,因此使用的是 CSRF。因此,您需要随请求一起发送正确的 CSRF 令牌。如果您使用令牌方法(而不是 cookie)生成应用程序,则不需要 CSRF。
查看https://github.com/jhipster/generator-jhipster/issues/363 并在页面上搜索邮递员。
【讨论】:
在文件 SecurityConfiguration.java 中更改为
.antMatchers("/api/**").authenticated()
到
.antMatchers("/api/**").permitAll()
让您无需任何身份验证即可访问 api。
注意:这是不安全的,并且会公开您的 API,但在通过邮递员进行测试时可能会有用。
【讨论】:
我的网站允许未经身份验证的用户访问某些部分。因此我觉得 401 错误很烦人。
我提出了一个拉取请求来修复它,请参见此处: https://github.com/jhipster/generator-jhipster/pull/2623
它需要访问 api/帐户,但还需要进行一些其他更改以避免 NPE。
【讨论】:
由于 Postman 现在是一个单独的应用程序(而不是扩展程序),它无法直接访问您的 cookie。但是,仍然可以将 Postman 与 session-auth JHipster 应用程序一起使用。
/api/authentication 的响应中的 Set-Cookie 标头(JSESSIONID 和 X-XSRF-TOKEN)。您还可以在浏览器的开发者控制台中的其他位置找到 cookie,在 Chrome 中它们位于“应用程序”选项卡下。JSESSIONID 和 X-XSRF-TOKEN cookie。请求的“Cookies”选项卡将如下图所示。有关 Postman 和 JWT 身份验证的帮助,请参阅 this answer。
【讨论】:
/api/${SOME_ENTITY} 的 HTTP POST 仍然失败,并显示 403 Forbidden。
CSRF-TOKEN 而不是XSRF-TOKEN。另一种选择是将该令牌作为标头而不是带有 X-XSRF-TOKEN 的 cookie 传递。我不确定为什么您看不到 Cookies 标签,邮递员拦截器可能正在为您处理 - 我没有尝试过