Pour préparer le service d'autorisation central, nous avons besoin de
nginx lui-même et de ses
plugins de session cryptée ,
echo ,
headers-more ,
auth_request ,
eval ,
set-misc . (J'ai donné des liens vers mes fourches, car j'ai apporté des modifications qui n'ont pas encore été entassées dans les référentiels d'origine. Vous pouvez également utiliser l'
image prête à l'
emploi .)
Pour la partie serveur, ajoutez la génération de jetons à la configuration du serveur à partir d'
une autorisation
ESIA , de
base ou
LDAPlocation =/service { set_decode_base64 $auth_decode $cookie_auth;
et validation des jetons
location =/serviceValidate { set_unescape_uri $token_unescape $arg_token;
Et dans la configuration du serveur client, nous avons d'abord défini
encrypted_session_key "abcdefghijklmnopqrstuvwxyz123456";
Ensuite, juste au cas où, désactivez l'en-tête d'autorisation
more_clear_input_headers Authorization;
Maintenant, nous protégeons tout avec autorisation
auth_request /auth; location =/auth { internal; set_decode_base64 $auth_decode $cookie_auth;
Pour les utilisateurs autorisés, nous affichons le contenu de leur dossier
location / { alias html/$remote_user/; }
Et en l'absence d'autorisation, nous redirigeons vers le service central d'autorisation
error_page 401 = @error401; location @error401 { set_escape_uri $request_uri_escape $request_uri;
Après une autorisation réussie, le service d'autorisation central nous redirige vers le site spécifié
location =/login { eval $auth {