Para preparar o serviço de autorização central, precisamos do próprio
nginx e de seus plugins
sessão criptografada ,
eco ,
headers-more ,
auth_request ,
eval ,
set-misc . (Forneci links para meus garfos, porque fiz algumas alterações que até agora não puderam ser enviadas para os repositórios originais. Você também pode usar a imagem
pronta .)
Para a parte do servidor, adicione geração de token à configuração do servidor a partir da autorização
ESIA ,
básica ou
LDAPlocation =/service { set_decode_base64 $auth_decode $cookie_auth;
e validação de token
location =/serviceValidate { set_unescape_uri $token_unescape $arg_token;
E na configuração do servidor cliente, primeiro definimos
encrypted_session_key "abcdefghijklmnopqrstuvwxyz123456";
Em seguida, por precaução, desative o cabeçalho da autorização
more_clear_input_headers Authorization;
Agora protegemos tudo com autorização
auth_request /auth; location =/auth { internal; set_decode_base64 $auth_decode $cookie_auth;
Para usuários autorizados, mostramos o conteúdo da pasta
location / { alias html/$remote_user/; }
E, na falta de autorização, redirecionamos para o serviço central de autorização
error_page 401 = @error401; location @error401 { set_escape_uri $request_uri_escape $request_uri;
Após uma autorização bem-sucedida, o serviço de autorização central nos redireciona para o especificado
location =/login { eval $auth {