def get_jwk_from_public_key(key_name): key_path = os.path.join(app.root_path, '..', 'configs', key_name) f = open(key_path, 'r') key_content = f.read() jwk = Registration.get_jwk(key_content) f.close() return jwk
def get_jwks(self, iss=None, client_id=None, **kwargs): search_kwargs = {} if iss: search_kwargs['lti_tools__issuer'] = iss if client_id: search_kwargs['lti_tools__client_id'] = client_id if search_kwargs: search_kwargs['lti_tools__is_active'] = True qs = self._keys_cls.objects.filter(**search_kwargs) else: qs = self._keys_cls.objects.all() jwks = [] public_key_lst = [] for key in qs: if key.public_key and key.public_key not in public_key_lst: if key.public_jwk: jwks.append(json.loads(key.public_jwk)) else: jwks.append(Registration.get_jwk(key.public_key)) public_key_lst.append(key.public_key) return { 'keys': jwks }
def save(self, *args, **kwargs): # pylint: disable=arguments-differ,signature-differs if self.public_key: public_jwk_dict = Registration.get_jwk(self.public_key) self.public_jwk = json.dumps(public_jwk_dict) else: self.public_key = None self.public_jwk = None super(LtiToolKey, self).save(*args, **kwargs)
def find_registration_by_params(self, iss, client_id, *args, **kwargs): lti_tool = self.get_lti_tool(iss, client_id) auth_audience = lti_tool.auth_audience if lti_tool.auth_audience else None key_set = json.loads(lti_tool.key_set) if lti_tool.key_set else None key_set_url = lti_tool.key_set_url if lti_tool.key_set_url else None tool_public_key = lti_tool.tool_key.public_key if lti_tool.tool_key.public_key else None reg = Registration() reg.set_auth_login_url(lti_tool.auth_login_url) \ .set_auth_token_url(lti_tool.auth_token_url) \ .set_auth_audience(auth_audience) \ .set_client_id(lti_tool.client_id) \ .set_key_set(key_set) \ .set_key_set_url(key_set_url) \ .set_issuer(lti_tool.issuer) \ .set_tool_private_key(lti_tool.tool_key.private_key) \ .set_tool_public_key(tool_public_key) return reg