Skip to content

Commit 773bf95

Browse files
author
Roland Hedberg
committed
Persistent ID should not be equal to userid !
According to the spec: Persistent name identifiers generated by identity providers MUST be constructed using pseudo-random values that have no discernible correspondence with the subject's actual identifier (for example, username)
1 parent 454ef61 commit 773bf95

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/saml2/ident.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ def get_nameid(self, userid, nformat, sp_name_qualifier, name_qualifier):
163163

164164
_id = "%s@%s" % (_id, self.domain)
165165

166-
if nformat == NAMEID_FORMAT_PERSISTENT:
167-
_id = userid
166+
# if nformat == NAMEID_FORMAT_PERSISTENT:
167+
# _id = userid
168168

169169
nameid = NameID(format=nformat, sp_name_qualifier=sp_name_qualifier,
170170
name_qualifier=name_qualifier, text=_id)

tests/test_33_identifier.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ def test_persistent_1(self):
8484

8585
assert id == "foobar"
8686

87+
def test_persistent_2(self):
88+
userid = 'foobar'
89+
nameid1 = self.id.persistent_nameid(userid, sp_name_qualifier="sp1",
90+
name_qualifier="name0")
91+
92+
nameid2 = self.id.persistent_nameid(userid, sp_name_qualifier="sp1",
93+
name_qualifier="name0")
94+
95+
# persistent NameIDs should be _persistent_ :-)
96+
assert nameid1 == nameid2
97+
8798
def test_transient_1(self):
8899
policy = Policy({
89100
"default": {
@@ -124,8 +135,8 @@ def test_vo_1(self):
124135
'name_qualifier'])
125136
assert nameid.sp_name_qualifier == 'http://vo.example.org/biomed'
126137
assert nameid.format == NAMEID_FORMAT_PERSISTENT
127-
# we want to keep the user identifier in the nameid node
128-
assert nameid.text == "foobar"
138+
# we want to *NOT* keep the user identifier in the nameid node
139+
assert nameid.text != "foobar"
129140

130141
def test_vo_2(self):
131142
policy = Policy({

0 commit comments

Comments
 (0)