NGINX - lua-resty-openidc - 无法访问POST的API URL
2020-2-25 12:43:53
收藏:0
阅读:179
评论:0
使用已配置lua-resty-openidc的Openresty NGINX。
api.conf
location /api/postsomething {
limit_except POST {
deny all;
}
error_page 403 = @405; # 将响应从“403 (禁止)”转换为“405 (方法不允许)”
set $upstream api_dev;
rewrite ^ /_apipost last;
}
location = /_apipost {
internal;
set $api_name "someapi";
access_by_lua_file /etc/nginx/oauth_authenticate.lua;
proxy_pass https://$upstream$request_uri;
}
oauth_authenticate.lua
local opts = {
redirect_uri="https://<ipd>/oauth_callback",
discovery="https://<idp.ip>/.well-known/openid-configuration",
client_id="client_id_test",
client_secret="",
scope="openid",
ssl_verify="no"
}
local res, err =require("resty.openidc").authenticate(opts)
if err then
ngx.status = 500
ngx.say(err)
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end
local jwt = require "resty.jwt"
local jwt_obj = jwt:load_jwt(res.access_token)
-- 解析上方使用的访问令牌并将其打印到日志中
local cjson = require "cjson"
ngx.log(ngx.DEBUG, "此为访问令牌:\n " .. cjson.encode(jwt_obj.payload))
-- 设置包含用户信息的头部:这将覆盖任何现有的头部
-- 但也抹掉(!)这些头部以防没有在令牌中提供值
ngx.req.set_header("X-USER", res.id_token.sub)
现在在Postman中调用后端API的结果如下URL:
POST > https://nginx_ip/api/postsomething
结果:
<!-- 模板名称:form.autopost.template.html -->
<html>
<head>
<title>提交表单</title>
</head>
<body onload="javascript:document.forms[0].submit()">
<noscript>
<p>
<strong>注意:</strong>由于您的浏览器不支持JavaScript,您必须按一下“继续”按钮才能继续。
</p>
</noscript>
<form method="post" action="https://<idp_ip>/idp/SSO.saml2">
<input type="hidden" name="SAMLRequest" value="ddfdfdfdf3Q+"/>
<input type="hidden" name="RelayState" value="fdfergerger"/>
<noscript><input type="submit" value="继续"/></noscript>
</form>
</body>
</html>
如何使用OIDC模块lua保护API(POST调用)?如果我在浏览器中发出相同的请求,会要求我进行用户身份验证,而浏览器的结果是这样的:
405 (方法不允许)
如果我创建一个HTML表单POST到https://nginx_ip/api/postsomething,结果是405。为什么?请帮忙。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
