Истечь или перенаправить http 401 для mod_auth_openidc

Я не уверен, что это что-то обрабатывается в OIDC или Apache в целом, но то, что я вижу, это то, что я надеялся получить несколько советов:

Клиент входит в несколько учетных записей Google, и при выборе аккаунта они выбирают неправильный аккаунт и получают 401 несанкционированный доступ.

Затем они пытаются вернуться на сервер OIDC и продолжают получать несанкционированный доступ. Это верно, даже если они очищают куки и т. Д.

Единственный надежный способ заставить их войти в систему - это открыть личное окно в Safari или другую личность в Chrome.

Есть ли способ сделать перенаправление 401 в Google Account Chooser и затем разрешить повторную попытку apache? По сути, как только они получают 401 от Apache - через OpenIDC - нет хорошего способа снова повторить. Есть ли способ облегчить повторную попытку входа в систему для людей?

Заранее спасибо. Мои конфиги ниже:

<VirtualHost _default_:443>
   ServerName nameofserver.com
   ServerAdmin ops@nameofserver.com
   DocumentRoot /var/www/html
   Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
   Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
   SetEnvIf Origin "^(.*\.nameofserver\.co,)$" ORIGIN_SUB_DOMAIN=$1
   Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN
   Header always set Access-Control-Allow-Credentials "true"
   ErrorDocument 503 "A custom error message"
   RequestHeader set X-Forwarded-Proto "https" early
   LimitRequestFieldSize 65000

   SSLEngine on
   SSLCertificateFile /etc/apache2/pathtoprivcert
   SSLCertificateKeyFile /etc/apache2/ssl/pathtoprivkey
   SSLProtocol             TLSv1.1 TLSv1.2
   SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
   SSLHonorCipherOrder     on
   SSLCompression          off

   OIDCProviderMetadataURL https://accounts.google.com/.well-known/openid-configuration
   OIDCClientID clientIDfromGoogle@google.com
   OIDCClientSecret Averysecrtkey

   OIDCScope "openid email profile"
   OIDCRedirectURI https://www.nameofserver.com/oauth2callback
   OIDCCryptoPassphrase Alsoverysecurekey

   OIDCSessionInactivityTimeout 86400

   OIDCCookiePath /

   OIDCRemoteUserClaim email
   OIDCAuthNHeader X-Forwarded-User

   LogLevel info


   <Proxy balancer://http-nameofserver>
     BalancerMember http://www1.nameofserver.com route=0
     BalancerMember http://www2.nameofserver.com route=1
     BalancerMember http://www3.nameofserver.com route=2

     ProxySet lbmethod=byrequests
     ProxySet stickysession=ROUTEID
     ProxySet failonstatus=503
     ProxySet maxattempts=2
   </Proxy>

   <Proxy balancer://ws-nameofserver>
     BalancerMember ws://www1.nameofserver.com route=0
     BalancerMember ws://www2.nameofserver.com route=1
     BalancerMember ws://www3.nameofserver.com route=2

     ProxySet lbmethod=byrequests
     ProxySet stickysession=ROUTEID
     ProxySet failonstatus=503
     ProxySet maxattempts=2
   </Proxy>


   RewriteEngine On
   RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
   RewriteCond %{QUERY_STRING} transport=websocket    [NC]
   RewriteRule /(.*) balancer://ws-nameofserver/$1 [P,L]

   ProxyPreserveHost on
   ProxyPass / balancer://http-nameofserver/
   ProxyPassReverse / balancer://http-nameofserver/
   ProxyPass /socket.io/ balancer://ws-nameofserver/socket.io/
   ProxyPassReverse /socket.io/ balancer://ws-nameofserver/socket.io/

   ProxyRequests     Off
   AllowEncodedSlashes NoDecode

      <Location />
         AuthType openid-connect
         Require host somealloweddomain.com
         Require claim hd:corpsite.com
         Require claim hd:someotherdomain.com
         Require claim hd:yetanothercompany.com
      </Location>

      <LocationMatch "^(?!/t/|/an-url|/another-url|/lasturl)/[^/]+">
         OIDCUnAuthAction 401
      </LocationMatch>

</VirtualHost>

1 ответ

Решение

Вы можете добавить пользовательский параметр prompt=select_account в запросах на аутентификацию, как описано в: https://github.com/pingidentity/mod_auth_openidc/wiki

Так что в вашем случае добавьте:

OIDCAuthRequestParams prompt=select_account
Другие вопросы по тегам