@@ -51,6 +51,7 @@ def __init__(self, request_data, old_settings=None, custom_base_path=None):
5151 self .__request_data = request_data
5252 self .__settings = OneLogin_Saml2_Settings (old_settings , custom_base_path )
5353 self .__attributes = []
54+ self .__friendlyname_attributes = []
5455 self .__nameid = None
5556 self .__nameid_format = None
5657 self .__nameid_nq = None
@@ -104,6 +105,7 @@ def process_response(self, request_id=None):
104105 self .__last_response = response .get_xml_document ()
105106 if response .is_valid (self .__request_data , request_id ):
106107 self .__attributes = response .get_attributes ()
108+ self .__friendlyname_attributes = response .get_friendlyname_attributes ()
107109 self .__nameid = response .get_nameid ()
108110 self .__nameid_format = response .get_nameid_format ()
109111 self .__nameid_nq = response .get_nameid_nq ()
@@ -115,11 +117,9 @@ def process_response(self, request_id=None):
115117 self .__last_authn_contexts = response .get_authn_contexts ()
116118 self .__last_assertion_not_on_or_after = response .get_assertion_not_on_or_after ()
117119 self .__authenticated = True
118-
119120 else :
120121 self .__errors .append ('invalid_response' )
121122 self .__error_reason = response .get_error ()
122-
123123 else :
124124 self .__errors .append ('invalid_binding' )
125125 raise OneLogin_Saml2_Error (
@@ -231,6 +231,15 @@ def get_attributes(self):
231231 """
232232 return self .__attributes
233233
234+ def get_friendlyname_attributes (self ):
235+ """
236+ Returns the set of SAML attributes indexed by FiendlyName.
237+
238+ :returns: SAML attributes
239+ :rtype: dict
240+ """
241+ return self .__friendlyname_attributes
242+
234243 def get_nameid (self ):
235244 """
236245 Returns the nameID.
@@ -324,6 +333,22 @@ def get_attribute(self, name):
324333 value = self .__attributes [name ]
325334 return value
326335
336+ def get_friendlyname_attribute (self , friendlyname ):
337+ """
338+ Returns the requested SAML attribute searched by FriendlyName.
339+
340+ :param friendlyname: FriendlyName of the attribute
341+ :type friendlyname: string
342+
343+ :returns: Attribute value(s) if exists or None
344+ :rtype: list
345+ """
346+ assert isinstance (friendlyname , basestring )
347+ value = None
348+ if self .__friendlyname_attributes and friendlyname in self .__friendlyname_attributes .keys ():
349+ value = self .__friendlyname_attributes [friendlyname ]
350+ return value
351+
327352 def get_last_request_id (self ):
328353 """
329354 :returns: The ID of the last Request SAML message generated.
0 commit comments