Projet

Général

Profil

0001-franceconnect_data-add-a-hash-of-the-identite_pivot-.patch

Benjamin Dauvergne, 24 juin 2021 17:17

Télécharger (2,15 ko)

Voir les différences:

Subject: [PATCH] franceconnect_data: add a hash of the identite_pivot to
 returned data (#55155)

 passerelle/apps/franceconnect_data/fc.py | 11 +++++++++++
 tests/test_franceconnect_data.py         |  1 +
 2 files changed, 12 insertions(+)
passerelle/apps/franceconnect_data/fc.py
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
import base64
18
import hashlib
18 19
import json
19 20
import urllib.parse
20 21
import uuid
......
113 114
            platform.user_info_endpoint_url,
114 115
            headers={'Authorization': 'Bearer %s' % self.fc_access_token},
115 116
        )
117
        fc_user_info['hash'] = self.make_identite_pivot_sha256(fc_user_info)
116 118
        self.add('fc_user_info', fc_user_info)
117 119

  
120
    def make_identite_pivot_sha256(self, user_info):
121
        parts = []
122
        for key in ['given_name', 'family_name', 'birthdate', 'gender', 'birthplace', 'birthcountry']:
123
            if not user_info.get(key):
124
                return None
125
            parts.append('%s=%s' % (key, user_info.get(key) or ''))
126
        data = '\n'.join(parts)
127
        return hashlib.sha256(data.encode()).hexdigest().lower()
128

  
118 129
    def request_dgfip_access_token(self, dgfip_username, dgfip_password, scope=None):
119 130
        data = {
120 131
            'grant_type': 'client_credentials',
tests/test_franceconnect_data.py
85 85
            'gender': 'male',
86 86
            'given_name': 'John',
87 87
            'sub': 'sub-1234',
88
            'hash': 'c4d239de7e2abc4782039091437bcc9ad963ec93b40ffe6beac6600c36f3635b',
88 89
        },
89 90
        'id': None,
90 91
        'text': 'John Doe né le April 28, 2001',
91
-