예제 #1
0
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
예제 #2
0
    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
        }
예제 #3
0
 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)
예제 #4
0
    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