ngx_http_auth_request_module是什么?
ngx_http_auth_request_module
模块 实现了基于一子请求的结果的客户端的授权。如果子请求返回2xx响应码,则允许访问。如果它返回401或403,则访问被拒绝并显示相应的错误代码。子请求返回的任何其他响应代码都被认为是错误的。auth_request
使用的也是subrequest
进行子请求。
ngx_http_auth_request_module模块用途
当我们访问一个资源需要进行鉴权时,可以使用Nginx
的http_auth_request_module
模块进行处理
ngx_http_auth_request_module使用
nginx配置文件
server {
listen 8082;
server_name localhost;
location /private {
auth_request /auth;
# 鉴权通过后的处理方式
proxy_pass http://127.0.0.1:8002/auth/success;
}
location = /auth {
# 鉴权服务器的地址
proxy_pass http://127.0.0.1:8002/auth/token;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
java 代码
package com.task.controller;
import cn.hutool.http.server.HttpServerRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* @author wuzhenyong
* ClassName:NginxAuthRequestController.java
* date:2022-11-23 09:38
* Description: 认证服务器
*/
@RestController
@RequestMapping("/auth")
public class NginxAuthRequestController {
@GetMapping("/token")
public Map<String, Object> token() {
System.out.println("请求认证服务器接口" + LocalDateTime.now());
Map<String, Object> result = new HashMap<String, Object>();
result.put("code", 200);
result.put("msg", "成功");
return result;
// throw new RuntimeException("认证失败");
}
@GetMapping("/success")
public Map<String, Object> success() {
System.out.println("认证成功" + LocalDateTime.now());
Map<String, Object> result = new HashMap<String, Object>();
result.put("code", 200);
result.put("msg", "成功");
return result;
}
}
测试模拟认证成功
浏览器访问地址:http://localhost:8082/private
控制台打印:
模拟认证失败,抛出异常
代码变动:
文章来源:https://www.toymoban.com/news/detail-584773.html
重启项目访问测试:
返回的是nginx的错误页面哦,也可以自定义处理文章来源地址https://www.toymoban.com/news/detail-584773.html
到了这里,关于Nginx ngx_http_auth_request_module模块鉴权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!