def test_pack_and_unpack(self): ss = make_software_statement(self.keyjar, self.issuer, client_id='ABC 001') msg = unpack_software_statement(ss, self.issuer, self.keyjar) assert msg assert _eq(msg.keys(), ['client_id', 'iat', 'iss', 'exp', 'jti']) assert msg['client_id'] == 'ABC 001' assert msg['iss'] == self.issuer
def test_client_registration_with_software_statement(self): jwks, keyjar, kidd = build_keyjar(KEYS) fed_operator = 'https://fedop.example.org' self.provider.keyjar[fed_operator] = keyjar[''] ss = make_software_statement(keyjar, fed_operator, client_id='foxtrot') args = { "redirect_uris": ["https://client.example.org/callback", "https://client.example.org/callback2"], "client_name": "XYZ Service B", "token_endpoint_auth_method": "client_secret_basic", "scope": "read write dolphin", 'software_statement': ss } request = RegistrationRequest(**args) resp = self.provider.registration_endpoint(request=request.to_json(), environ={}) cli_resp = ClientInfoResponse().from_json(resp.message) assert cli_resp
json.dumps(ssreq.to_dict(), sort_keys=True, indent=2, separators=(',', ': '))) # ----------------------------------------------------------------------------- # The FO constructs Software statement # ----------------------------------------------------------------------------- ssreq.update({ "response_types": ["code", "token"], "token_endpoint_auth_method": "private_key_jwt", "scopes_allowed": ['openid', 'email', 'phone'] }) sost = make_software_statement(fo_keyjar, 'https://fo.example.com/', **ssreq.to_dict()) _jwt = factory(sost) _sos = json.loads(_jwt.jwt.part[1].decode('utf8')) print(70 * "-") print('FO extended software statement') print(70 * "-") print_lines(json.dumps(_sos, sort_keys=True, indent=2, separators=(',', ': '))) print() print_lines(sost) # ----------------------------------------------------------------------------- # Create intermediate key pair # ----------------------------------------------------------------------------- im_jwks, im_keyjar = build_keyjar(key_conf)[:-1]
def test_pack(self): ss = make_software_statement(self.keyjar, self.issuer, client_id='ABC 001') assert ss assert len(ss.split('.')) == 3
print(70 * "-") print_lines(json.dumps(ssreq.to_dict(), sort_keys=True, indent=2, separators=(",", ": "))) # ----------------------------------------------------------------------------- # The FO constructs Software statement # ----------------------------------------------------------------------------- ssreq.update( { "response_types": ["code", "token"], "token_endpoint_auth_method": "private_key_jwt", "scopes_allowed": ["openid", "email", "phone"], } ) sost = make_software_statement(fo_keyjar, "https://fo.example.com/", **ssreq.to_dict()) _jwt = factory(sost) _sos = json.loads(_jwt.jwt.part[1].decode("utf8")) print(70 * "-") print("FO extended software statement") print(70 * "-") print_lines(json.dumps(_sos, sort_keys=True, indent=2, separators=(",", ": "))) print() print_lines(sost) # ----------------------------------------------------------------------------- # Create intermediate key pair # ----------------------------------------------------------------------------- im_jwks, im_keyjar = build_keyjar(key_conf)[:-1]