Моя организация использует OpenAM SSO для аутентификации, и мое приложение написано в Pyramid. Идентификатор пользователя передается в HTTP-заголовке. Я также могу настроить его для передачи групп и разрешений, которые я могу использовать в acl. Это делает аутентификацию в пирамиде избыточной. Можно ли вообще отказаться от Политики аутентификации и идти только с авторизацией?Pyramid: Можно ли использовать авторизацию без аутентификации?
ответ
Вам нужен способ рассказать системе авторизации пирамиды, кем является человек (их эффективные принципы). Это ответственность за политику аутентификации, даже если это так просто, как разбор заголовка.
class CustomAuthenticationPolicy(object):
def effective_principals(self, request):
principals = [Everyone]
identity = request.headers.get('x-identity')
# validate the identity somehow
if is_valid(identity):
principals += [Authenticated, identity, 'g:editors']
return principals
config.set_authentication_policy(CustomAuthenticationPolicy())
Я использовал ваше решение и смог решить проблему. Первоначально он жаловался, что 'CustomAuthenticationPolicy' не имеет атрибута' unauthenticated_userid'. Поэтому я добавил этот метод для возврата идентификатора пользователя, и он сработал! Спасибо вам @ michael-merickel. –
Да, мое решение было только для получения разрешения на работу. Если у вас есть другой код, который вызывает 'authenticated_userid' или' unauthenticated_userid', тогда вам нужно определить другие методы. –
- 1. Pyramid: почему я не могу использовать политику аутентификации без политики авторизации?
- 2. Могу ли я использовать авторизацию/аутентификации для пользовательской базы данных
- 3. Смешивание политик аутентификации в Pyramid
- 4. Можно ли использовать id_token для запроса токена доступа без аутентификации?
- 5. Может ли SAML сделать авторизацию?
- 6. можно сделать авторизацию с помощью SAML
- 7. Можно ли выполнить авторизацию SSL через telnet?
- 8. Использование weblogic Авторизация без аутентификации
- 9. Использовать API Youtube без аутентификации
- 10. Можно ли отправлять почту с Javamail без аутентификации?
- 11. Можно ли использовать SVN-аутентификацию/авторизацию авторизации между svnserve и http DAV?
- 12. Можно ли использовать nhibernate без отображения XML?
- 13. Можно ли использовать OpenShift без использования rhc?
- 14. Можно ли использовать BIRT без Eclipse?
- 15. Можно ли использовать GStreamer без графического интерфейса?
- 16. Можно ли использовать Laravel 5 без фасадов?
- 17. Можно ли использовать pushViewController без контроллера навигации?
- 18. Можно ли использовать jQuery UI * Без * Цвета?
- 19. Можно ли использовать Ruby Mechanize без Nokogiri?
- 20. Можно ли использовать Disqus без ссылок?
- 21. Можно ли использовать Materializecss без jQuery?
- 22. Можно ли использовать OverlayItem.setMarker() без тени?
- 23. Можно ли использовать FOSCommentBundle без FOSUserBundle?
- 24. Можно ли использовать PJSIP (PJSUA2) без аудиоустройства?
- 25. Можно ли использовать блок LABEL без цикла?
- 26. Можно ли использовать Silverlight RiaServices без IIS?
- 27. Можно ли использовать webrtc без браузера?
- 28. Можно ли использовать массив без его инициализации?
- 29. Можно ли использовать облачный борт без сервера?
- 30. Можно ли использовать UILocalNotification без отображения сообщения?
Наличие имени пользователя, переданного как заголовок, является всего лишь типом аутентификации. –