我目前有一个使用oauth2和okta作为提供程序的使用spring-security的应用程序。这非常适合对该应用程序进行身份验证。我现在尝试设置nginx来提供内容,但前提是您已通过Java应用程序进行了身份验证。
我本质上是在遵循本指南
https://redbyte.eu/en/blog/using-the-nginx-auth-request-module/
location = /auth {
internal;
proxy_set_header Host $host;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_pass https://host.com/app/auth_check;
}
location @noauth {
return 302 https://corp.okta.com/oauth2/default/v1/authorize?response_type=code&client_id=XXX&scope=openid%20profile%20email&state=XXX%3D&redirect_uri=https://host.com/app/login/oauth2/code/OKTA;
}
location / {
auth_request /auth;
error_page 401 = @noauth;
auth_request_set $user $upstream_http_x_forwarded_user;
proxy_set_header X-Forwarded-User $user;
proxy_pass https://some-resource.com:8080;
}
这是代码流:
authorization_request_not_found
据我所读,这是因为nginx在应用程序中没有有效的JSESSIONID,因此即使我有来自okta的有效代码,也无法进行身份验证。
针对此问题是否有更好的体系结构?或可以使这项工作有效的nginx配置