我正在使用带有uaa的网关。我在网关中所做的唯一更改是“ .csrf()。disable()”
当我尝试使用以下命令获取令牌时。我收到405错误。
命令: curl -X POST -v http://localhost:8181/oauth/token -i -H“接受:应用程序/ json” -H“授权:基本aW50ZXJuYWw6aW50ZXJuYWw =” -d“ grant_type = client_credentials&scope = web-app”
错误: {“类型”:“ https://www.jhipster.tech/problem/problem-with-message”,“标题”:“不允许使用方法”,“状态”:405,“详细信息”:“不支持请求方法'POST'”,“路径”:“ / oauth /token","message":"error.http.405"}%
当我打开uaa的端口并运行命令时,它能够获取令牌。
curl -X POST -v http://localhost:9999/oauth/token -i -H“接受:应用程序/ json” -H“授权:基本aW50ZXJuYWw6aW50ZXJuYWw =” -d“ grant_type = client_credentials&scope = web-app”
答案 0 :(得分:1)
首先,除非您绝对确定需要这样做,否则我不建议您禁用CSRF protection。
您的第一个CURL请求被发送到网关。端点存在于UAA上,而不是网关上,这说明了为什么您的第二个CURL请求可以工作。要通过网关进行请求,可以使用将请求代理到UAA服务的正确URL:
http://localhost:8080/services/uaa/oauth/token
对/services/uaa/
的请求将路由到uaa
服务。
UAA网关还具有一个auth端点,Angular / React客户端使用该端点来生成cookie:
curl 'http://localhost:8080/auth/login' -H 'Content-Type: application/json' --data-binary '{"username":"admin","password":"admin","rememberMe":true}' --compressed