summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/api/request.rst4
-rw-r--r--docs/narr/security.rst14
-rw-r--r--docs/quick_tutorial/authentication/tutorial/security.py4
-rw-r--r--docs/quick_tutorial/authorization/tutorial/security.py4
-rw-r--r--docs/tutorials/wiki/authorization.rst2
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/security.py6
-rw-r--r--docs/tutorials/wiki/src/tests/tutorial/security.py6
-rw-r--r--docs/tutorials/wiki2/authentication.rst2
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/security.py6
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/security.py8
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/security.py8
-rw-r--r--docs/whatsnew-2.0.rst8
-rw-r--r--src/pyramid/config/testing.py7
-rw-r--r--src/pyramid/interfaces.py10
-rw-r--r--src/pyramid/request.py2
-rw-r--r--src/pyramid/security.py12
-rw-r--r--src/pyramid/testing.py6
-rw-r--r--tests/pkgs/securityapp/__init__.py2
-rw-r--r--tests/test_config/test_testing.py2
-rw-r--r--tests/test_security.py10
-rw-r--r--tests/test_testing.py4
21 files changed, 62 insertions, 65 deletions
diff --git a/docs/api/request.rst b/docs/api/request.rst
index edd319864..8704a2fe7 100644
--- a/docs/api/request.rst
+++ b/docs/api/request.rst
@@ -175,8 +175,8 @@
.. deprecated:: 2.0
``unauthenticated_userid`` has been deprecated in version 2.0. Use
- :attr:`authenticated_userid` or :attr:`authenticated_identity`
- instead. See :ref:`upgrading_auth` for more information.
+ :attr:`authenticated_userid` or :attr:`identity` instead. See
+ :ref:`upgrading_auth` for more information.
A property which returns a value which represents the *claimed* (not
verified) :term:`userid` of the credentials present in the
diff --git a/docs/narr/security.rst b/docs/narr/security.rst
index 10e9df78d..74149e6b0 100644
--- a/docs/narr/security.rst
+++ b/docs/narr/security.rst
@@ -69,7 +69,7 @@ A simple security policy might look like the following:
from pyramid.security import Allowed, Denied
class SessionSecurityPolicy:
- def authenticated_identity(self, request):
+ def identity(self, request):
""" Return app-specific user object. """
userid = request.session.get('userid')
if userid is None:
@@ -78,14 +78,14 @@ A simple security policy might look like the following:
def authenticated_userid(self, request):
""" Return a string ID for the user. """
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is None:
return None
return string(identity.id)
def permits(self, request, context, permission):
""" Allow access to everything if signed in. """
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return Allowed('User is signed in.')
else:
@@ -144,7 +144,7 @@ For example, our above security policy can leverage these helpers like so:
def __init__(self):
self.helper = SessionAuthenticationHelper()
- def authenticated_identity(self, request):
+ def identity(self, request):
""" Return app-specific user object. """
userid = self.helper.authenticated_userid(request)
if userid is None:
@@ -153,14 +153,14 @@ For example, our above security policy can leverage these helpers like so:
def authenticated_userid(self, request):
""" Return a string ID for the user. """
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is None:
return None
return str(identity.id)
def permits(self, request, context, permission):
""" Allow access to everything if signed in. """
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return Allowed('User is signed in.')
else:
@@ -249,7 +249,7 @@ might look like so:
class SecurityPolicy:
def permits(self, request, context, permission):
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is None:
return Denied('User is not signed in.')
diff --git a/docs/quick_tutorial/authentication/tutorial/security.py b/docs/quick_tutorial/authentication/tutorial/security.py
index 8324000ed..020403c8b 100644
--- a/docs/quick_tutorial/authentication/tutorial/security.py
+++ b/docs/quick_tutorial/authentication/tutorial/security.py
@@ -19,13 +19,13 @@ class SecurityPolicy:
def __init__(self, secret):
self.authtkt = AuthTktCookieHelper(secret=secret)
- def authenticated_identity(self, request):
+ def identity(self, request):
identity = self.authtkt.identify(request)
if identity is not None and identity['userid'] in USERS:
return identity
def authenticated_userid(self, request):
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return identity['userid']
diff --git a/docs/quick_tutorial/authorization/tutorial/security.py b/docs/quick_tutorial/authorization/tutorial/security.py
index 53e3536fc..79e8cb295 100644
--- a/docs/quick_tutorial/authorization/tutorial/security.py
+++ b/docs/quick_tutorial/authorization/tutorial/security.py
@@ -26,13 +26,13 @@ class SecurityPolicy:
self.authtkt = AuthTktCookieHelper(secret=secret)
self.acl = ACLHelper()
- def authenticated_identity(self, request):
+ def identity(self, request):
identity = self.authtkt.identify(request)
if identity is not None and identity['userid'] in USERS:
return identity
def authenticated_userid(self, request):
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return identity['userid']
diff --git a/docs/tutorials/wiki/authorization.rst b/docs/tutorials/wiki/authorization.rst
index 3c9913d8c..9c685639d 100644
--- a/docs/tutorials/wiki/authorization.rst
+++ b/docs/tutorials/wiki/authorization.rst
@@ -88,7 +88,7 @@ The security policy controls several aspects of authentication and authorization
Identifying logged-in users
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The ``MySecurityPolicy.authenticated_identity`` method inspects the ``request`` and determines if it came from an authenticated user.
+The ``MySecurityPolicy.identity`` method inspects the ``request`` and determines if it came from an authenticated user.
It does this by utilizing the :class:`pyramid.authentication.AuthTktCookieHelper` class which stores the :term:`identity` in a cryptographically-signed cookie.
If a ``request`` does contain an identity, then we perform a final check to determine if the user is valid in our current ``USERS`` store.
diff --git a/docs/tutorials/wiki/src/authorization/tutorial/security.py b/docs/tutorials/wiki/src/authorization/tutorial/security.py
index f4445578e..6c091b4a6 100644
--- a/docs/tutorials/wiki/src/authorization/tutorial/security.py
+++ b/docs/tutorials/wiki/src/authorization/tutorial/security.py
@@ -28,13 +28,13 @@ class MySecurityPolicy:
self.authtkt = AuthTktCookieHelper(secret)
self.acl = ACLHelper()
- def authenticated_identity(self, request):
+ def identity(self, request):
identity = self.authtkt.identify(request)
if identity is not None and identity['userid'] in USERS:
return identity
def authenticated_userid(self, request):
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return identity['userid']
@@ -50,7 +50,7 @@ class MySecurityPolicy:
def effective_principals(self, request):
principals = [Everyone]
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
principals.append(Authenticated)
principals.append('u:' + identity['userid'])
diff --git a/docs/tutorials/wiki/src/tests/tutorial/security.py b/docs/tutorials/wiki/src/tests/tutorial/security.py
index f4445578e..6c091b4a6 100644
--- a/docs/tutorials/wiki/src/tests/tutorial/security.py
+++ b/docs/tutorials/wiki/src/tests/tutorial/security.py
@@ -28,13 +28,13 @@ class MySecurityPolicy:
self.authtkt = AuthTktCookieHelper(secret)
self.acl = ACLHelper()
- def authenticated_identity(self, request):
+ def identity(self, request):
identity = self.authtkt.identify(request)
if identity is not None and identity['userid'] in USERS:
return identity
def authenticated_userid(self, request):
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
return identity['userid']
@@ -50,7 +50,7 @@ class MySecurityPolicy:
def effective_principals(self, request):
principals = [Everyone]
- identity = self.authenticated_identity(request)
+ identity = self.identity(request)
if identity is not None:
principals.append(Authenticated)
principals.append('u:' + identity['userid'])
diff --git a/docs/tutorials/wiki2/authentication.rst b/docs/tutorials/wiki2/authentication.rst
index 5519a967e..4d8723176 100644
--- a/docs/tutorials/wiki2/authentication.rst
+++ b/docs/tutorials/wiki2/authentication.rst
@@ -64,7 +64,7 @@ Identifying the current user is done in a few steps:
#. The result is stored in the ``identity_cache`` which ensures that subsequent invocations return the same identity object for the request.
-Finally, :attr:`pyramid.request.Request.authenticated_identity` contains either ``None`` or a ``tutorial.models.User`` instance and that value is aliased to ``request.user`` for convenience in our application.
+Finally, :attr:`pyramid.request.Request.identity` contains either ``None`` or a ``tutorial.models.User`` instance and that value is aliased to ``request.user`` for convenience in our application.
Note the usage of the ``identity_cache`` is optional, but it has several advantages in most scenarios:
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/security.py b/docs/tutorials/wiki2/src/authentication/tutorial/security.py
index 1027ddd0a..a4843f286 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/security.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/security.py
@@ -19,11 +19,11 @@ class MySecurityPolicy:
user = request.dbsession.query(models.User).get(userid)
return user
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.identity_cache.get_or_create(request)
def authenticated_userid(self, request):
- user = self.authenticated_identity(request)
+ user = self.identity(request)
if user is not None:
return user.id
@@ -41,4 +41,4 @@ def includeme(config):
config.set_security_policy(MySecurityPolicy(settings['auth.secret']))
config.add_request_method(
- lambda request: request.authenticated_identity, 'user', property=True)
+ lambda request: request.identity, 'user', property=True)
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/security.py b/docs/tutorials/wiki2/src/authorization/tutorial/security.py
index 5a9d4bbf2..4f79195ef 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/security.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/security.py
@@ -25,11 +25,11 @@ class MySecurityPolicy:
user = request.dbsession.query(models.User).get(userid)
return user
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.identity_cache.get_or_create(request)
def authenticated_userid(self, request):
- user = self.authenticated_identity(request)
+ user = self.identity(request)
if user is not None:
return user.id
@@ -45,7 +45,7 @@ class MySecurityPolicy:
def effective_principals(self, request):
principals = [Everyone]
- user = self.authenticated_identity(request)
+ user = self.identity(request)
if user is not None:
principals.append(Authenticated)
principals.append('u:' + str(user.id))
@@ -60,4 +60,4 @@ def includeme(config):
config.set_security_policy(MySecurityPolicy(settings['auth.secret']))
config.add_request_method(
- lambda request: request.authenticated_identity, 'user', property=True)
+ lambda request: request.identity, 'user', property=True)
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/security.py b/docs/tutorials/wiki2/src/tests/tutorial/security.py
index 5a9d4bbf2..4f79195ef 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/security.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/security.py
@@ -25,11 +25,11 @@ class MySecurityPolicy:
user = request.dbsession.query(models.User).get(userid)
return user
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.identity_cache.get_or_create(request)
def authenticated_userid(self, request):
- user = self.authenticated_identity(request)
+ user = self.identity(request)
if user is not None:
return user.id
@@ -45,7 +45,7 @@ class MySecurityPolicy:
def effective_principals(self, request):
principals = [Everyone]
- user = self.authenticated_identity(request)
+ user = self.identity(request)
if user is not None:
principals.append(Authenticated)
principals.append('u:' + str(user.id))
@@ -60,4 +60,4 @@ def includeme(config):
config.set_security_policy(MySecurityPolicy(settings['auth.secret']))
config.add_request_method(
- lambda request: request.authenticated_identity, 'user', property=True)
+ lambda request: request.identity, 'user', property=True)
diff --git a/docs/whatsnew-2.0.rst b/docs/whatsnew-2.0.rst
index a58f317d7..906529d6b 100644
--- a/docs/whatsnew-2.0.rst
+++ b/docs/whatsnew-2.0.rst
@@ -47,7 +47,7 @@ signature.
The new security policy adds the concept of an :term:`identity`, which is an
object representing the user associated with the current request. The identity
-can be accessed via :attr:`pyramid.request.Request.authenticated_identity`.
+can be accessed via :attr:`pyramid.request.Request.identity`.
The object can be of any shape, such as a simple ID string or an ORM object.
The concept of :term:`principals <principal>` has been removed; the
@@ -89,10 +89,8 @@ For further documentation on implementing security policies, see
Behavior of the Legacy System
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Legacy authentication and authorization policies will continue to function as
-normal, as well as all related :class:`pyramid.request.Request` properties.
-The new :attr:`pyramid.request.Request.authenticated_identity` property will
-output the same result as :attr:`pyramid.request.Request.authenticated_userid`.
+Legacy authentication and authorization policies will continue to function as normal, as well as all related :class:`pyramid.request.Request` properties.
+The new :attr:`pyramid.request.Request.identity` property will output the same result as :attr:`pyramid.request.Request.authenticated_userid`.
If using a security policy, :attr:`pyramid.request.Request.unauthenticated_userid` will return the same value as :attr:`pyramid.request.Request.authenticated_userid`.
:attr:`pyramid.request.Request.effective_principals` will always return a one-element list containing the :data:`pyramid.authorization.Everyone` principal, as there is no equivalent in the new security policy.
diff --git a/src/pyramid/config/testing.py b/src/pyramid/config/testing.py
index 75a2d1c64..4ff858d89 100644
--- a/src/pyramid/config/testing.py
+++ b/src/pyramid/config/testing.py
@@ -32,10 +32,9 @@ class TestingConfiguratorMixin:
:attr:`pyramid.request.Request.authenticated_userid` will have this
value as well.
:type userid: str
- :param identity: If provided, the policy's ``authenticated_identity``
- method will return this value. As a result,
- :attr:`pyramid.request.Request.authenticated_identity`` will have
- this value.
+ :param identity: If provided, the policy's ``identity`` method will
+ return this value. As a result,
+ :attr:`pyramid.request.Request.identity`` will have this value.
:type identity: object
:param permissive: If true, the policy will allow access to any user
for any permission. If false, the policy will deny all access.
diff --git a/src/pyramid/interfaces.py b/src/pyramid/interfaces.py
index ffac7f641..0b7a07040 100644
--- a/src/pyramid/interfaces.py
+++ b/src/pyramid/interfaces.py
@@ -113,10 +113,10 @@ class IResponse(Interface):
"""Return a new app_iter built from the response app_iter that
serves up only the given start:stop range."""
- authenticated_identity = Attribute(
- """An object representing the authenticated user, as determined by
- the security policy in use, or ``None`` for unauthenticated requests.
- The object's class and meaning is defined by the security policy."""
+ identity = Attribute(
+ """An object containing authentication information related to the
+ current request. The object's type and meaning is defined by the
+ configured security policy."""
)
authenticated_userid = Attribute(
@@ -498,7 +498,7 @@ class IViewMapperFactory(Interface):
class ISecurityPolicy(Interface):
- def authenticated_identity(request):
+ def identity(request):
"""Return the :term:`identity` of the current user. The object can be
of any shape, such as a simple ID string or an ORM object.
"""
diff --git a/src/pyramid/request.py b/src/pyramid/request.py
index e5cfb37b8..c111bc62b 100644
--- a/src/pyramid/request.py
+++ b/src/pyramid/request.py
@@ -377,7 +377,7 @@ class RequestLocalCache:
result = ... # do some expensive computations
return result
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.identity_cache.get_or_create(request)
The cache maintains a weakref to each request and will release the cached
diff --git a/src/pyramid/security.py b/src/pyramid/security.py
index cbab0a0f2..9cdafaf6f 100644
--- a/src/pyramid/security.py
+++ b/src/pyramid/security.py
@@ -215,7 +215,7 @@ class SecurityAPIMixin:
""" Mixin for Request class providing auth-related properties. """
@property
- def authenticated_identity(self):
+ def identity(self):
"""
Return an opaque object identifying the current user or ``None`` if no
user is authenticated or there is no :term:`security policy` in effect.
@@ -224,7 +224,7 @@ class SecurityAPIMixin:
policy = _get_security_policy(self)
if policy is None:
return None
- return policy.authenticated_identity(self)
+ return policy.identity(self)
@property
def authenticated_userid(self):
@@ -247,7 +247,7 @@ class SecurityAPIMixin:
@property
def is_authenticated(self):
"""Return ``True`` if a user is authenticated for this request."""
- return self.authenticated_identity is not None
+ return self.authenticated_userid is not None
def has_permission(self, permission, context=None):
"""Given a permission and an optional context, returns an instance of
@@ -287,8 +287,8 @@ class AuthenticationAPIMixin:
``unauthenticated_userid`` does not have an equivalent in the new
security system. Use :attr:`.authenticated_userid` or
- :attr:`.authenticated_identity` instead.
- See :ref:`upgrading_auth` for more information.
+ :attr:`.identity` instead. See :ref:`upgrading_auth` for more
+ information.
Return an object which represents the *claimed* (not verified) user
id of the credentials present in the request. ``None`` if there is no
@@ -362,7 +362,7 @@ class LegacySecurityPolicy:
def _get_authz_policy(self, request):
return request.registry.getUtility(IAuthorizationPolicy)
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.authenticated_userid(request)
def authenticated_userid(self, request):
diff --git a/src/pyramid/testing.py b/src/pyramid/testing.py
index ddfe2a660..621a69d4b 100644
--- a/src/pyramid/testing.py
+++ b/src/pyramid/testing.py
@@ -42,7 +42,7 @@ class DummySecurityPolicy:
forget_result=None,
):
self.userid = userid
- self.identity = identity
+ self._identity = identity
self.permissive = permissive
if remember_result is None:
remember_result = []
@@ -51,8 +51,8 @@ class DummySecurityPolicy:
self.remember_result = remember_result
self.forget_result = forget_result
- def authenticated_identity(self, request):
- return self.identity
+ def identity(self, request):
+ return self._identity
def authenticated_userid(self, request):
return self.userid
diff --git a/tests/pkgs/securityapp/__init__.py b/tests/pkgs/securityapp/__init__.py
index facc37878..c5b713f23 100644
--- a/tests/pkgs/securityapp/__init__.py
+++ b/tests/pkgs/securityapp/__init__.py
@@ -3,7 +3,7 @@ from pyramid.security import Allowed, Denied
class SecurityPolicy:
- def authenticated_identity(self, request):
+ def identity(self, request):
raise NotImplementedError() # pragma: no cover
def authenticated_userid(self, request):
diff --git a/tests/test_config/test_testing.py b/tests/test_config/test_testing.py
index 5cdd19b50..120cfe5da 100644
--- a/tests/test_config/test_testing.py
+++ b/tests/test_config/test_testing.py
@@ -24,7 +24,7 @@ class TestingConfiguratorMixinTests(unittest.TestCase):
policy = config.registry.getUtility(ISecurityPolicy)
self.assertTrue(isinstance(policy, DummySecurityPolicy))
self.assertEqual(policy.userid, 'userid')
- self.assertEqual(policy.identity, 'identity')
+ self.assertEqual(policy._identity, 'identity')
self.assertEqual(policy.permissive, False)
def test_testing_securitypolicy_remember_result(self):
diff --git a/tests/test_security.py b/tests/test_security.py
index efaf9b4bf..9577f7e70 100644
--- a/tests/test_security.py
+++ b/tests/test_security.py
@@ -317,7 +317,7 @@ class TestViewExecutionPermitted(unittest.TestCase):
self.assertTrue(result)
-class TestAuthenticatedIdentity(unittest.TestCase):
+class TestIdentity(unittest.TestCase):
def setUp(self):
testing.setUp()
@@ -326,12 +326,12 @@ class TestAuthenticatedIdentity(unittest.TestCase):
def test_identity_no_security_policy(self):
request = _makeRequest()
- self.assertEqual(request.authenticated_identity, None)
+ self.assertEqual(request.identity, None)
def test_identity(self):
request = _makeRequest()
_registerSecurityPolicy(request.registry, 'yo')
- self.assertEqual(request.authenticated_identity, 'yo')
+ self.assertEqual(request.identity, 'yo')
class TestAuthenticatedUserId(unittest.TestCase):
@@ -501,7 +501,7 @@ class TestLegacySecurityPolicy(unittest.TestCase):
policy = LegacySecurityPolicy()
_registerAuthenticationPolicy(request.registry, 'userid')
- self.assertEqual(policy.authenticated_identity(request), 'userid')
+ self.assertEqual(policy.identity(request), 'userid')
def test_remember(self):
from pyramid.security import LegacySecurityPolicy
@@ -554,7 +554,7 @@ class DummySecurityPolicy:
def __init__(self, result):
self.result = result
- def authenticated_identity(self, request):
+ def identity(self, request):
return self.result
def authenticated_userid(self, request):
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 8f912dbd7..3eb4b040b 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -27,9 +27,9 @@ class TestDummySecurityPolicy(unittest.TestCase):
klass = self._getTargetClass()
return klass(userid, identity, permissive)
- def test_authenticated_identity(self):
+ def test_identity(self):
policy = self._makeOne('user', 'identity')
- self.assertEqual(policy.authenticated_identity(None), 'identity')
+ self.assertEqual(policy.identity(None), 'identity')
def test_authenticated_userid(self):
policy = self._makeOne('user')