Дополнительная или анонимная аутентификация с помощью mod_auth_openidc - PullRequest
0 голосов
/ 11 июня 2019

Возможно ли в mod_auth_openidc сделать эквивалент приглашения = нет попытки получить доступ к защищенному веб-сайту с использованием учетных данных от уже вошедшего в систему пользователя, но если нет, разрешить доступ без аутентификации?

Я запускаювеб-сайт, который доступен для общественности без какой-либо аутентификации, но также предоставляет дополнительные необязательные функции для тех, кто вошел в систему. Я хотел бы использовать mod_auth_openidc, чтобы разрешить пользователям входить в систему, но если я защищаю свои страницы с помощью модуля, он вызывает вход в систему перед доступомстраницы (как и следовало ожидать), и если я не буду защищать свои страницы, я не смогу видеть переменные OIDC, даже если я уже вошел в систему.

Так что вы перейдете на веб-сайт иувидеть домашнюю страницу.На этой странице кнопка входа.Когда вы входите в систему, вы все еще находитесь на главной странице, но теперь вы видите дополнительные материалы (например, персональное приветственное сообщение).

Единственное решение, которое у меня есть, - сделать весь мой сайт доступным на двух разных сайтах.URL, один защищен openidc, а другой нет.Когда вы входите в систему, вы перенаправлены на другой сайт.Но это потенциально может сбить с толку пользователей и, в действительности, программное обеспечение на стороне сервера, которое ожидает настройки baseURL.

Я могу реализовать это достаточно легко другими способами, но не могу найти решение на основе модуля mod_auth_openidc.

Я попробовал это:

<Location /example/public>
   AuthType openid-connect
</Location>
<Location /example/protected/>
   AuthType openid-connect
   Require valid-user
</Location>

Я надеялся, что произойдет, что переход к / example / protected потребует от меня входа (что происходит), а затем возврат к / example/ public все равно будет знать, что я вошел в систему. Но хотя / example / protected работает очень хорошо (поэтому моя базовая настройка верна), / example / public не работает вообще - не установлены переменные, поэтому я все еще невошел в систему.

Возможно, есть опция Require, которая будет делать то, что я хочу, или какой-нибудь другой чистый ответ?

1 Ответ

0 голосов
/ 11 июня 2019

Вам нужно использовать OIDCUnAuthAction pass, см .: https://github.com/zmartzone/mod_auth_openidc/commit/6890b13c481f12debbd7c65a79e9dc5197deb794

# Defines the action to be taken when an unauthenticated request is made.
# "auth" means that the user is redirected to the OpenID Connect Provider or Discovery page.
# "401" means that HTTP 401 Unauthorized is returned.
# "410" means that HTTP 410 Gone is returned
# "pass" means that an unauthenticated request will pass but claims will still be passed when a user happens to be authenticated already
# Useful in Location/Directory/Proxy path contexts that serve AJAX/Javascript calls and for "anonymous access"
# When not defined the default "auth" is used.
#OIDCUnAuthAction [auth|pass|401|410]
...