Exemplo n.º 1
0
    def getAssociation(self, server_url, handle=None):
        stored_assocs = OpenIDStore.objects.filter(
            server_url=server_url
        )
        if handle:
            stored_assocs = stored_assocs.filter(handle=handle)

        stored_assocs.order_by('-issued')

        if stored_assocs.count() == 0:
            return None

        return_val = None

        for stored_assoc in stored_assocs:
            assoc = OIDAssociation(
                stored_assoc.handle,
                base64.decodestring(stored_assoc.secret.encode('utf-8')),
                stored_assoc.issued, stored_assoc.lifetime,
                stored_assoc.assoc_type
            )
            # See:
            # necaris/python3-openid@1abb155c8fc7b508241cbe9d2cae24f18e4a379b
            if hasattr(assoc, 'getExpiresIn'):
                expires_in = assoc.getExpiresIn()
            else:
                expires_in = assoc.expiresIn
            if expires_in == 0:
                stored_assoc.delete()
            else:
                if return_val is None:
                    return_val = assoc

        return return_val
Exemplo n.º 2
0
    def getAssociation(self, server_url, handle=None):
        assocs = []
        if handle is not None:
            assocs = Association.objects.filter(
                server_url=server_url, handle=handle,
            )
        else:
            assocs = Association.objects.filter(server_url=server_url)
        if not assocs:
            return None
        associations = []
        expired = []
        for assoc in assocs:
            association = OIDAssociation(
                assoc.handle, base64.decodestring(assoc.secret), assoc.issued,
                assoc.lifetime, assoc.assoc_type,
            )
            if association.getExpiresIn() == 0:
                expired.append(assoc)
            else:
                associations.append((association.issued, association))

        for assoc in expired:
            assoc.delete()
        if not associations:
            return None
        associations.sort()
        return associations[-1][1]
Exemplo n.º 3
0
 def getAssociation(self, server_url, handle=None):
     assocs = []
     if handle is not None:
         assocs = Association.objects.filter(
             server_url = server_url, handle = handle
         )
     else:
         assocs = Association.objects.filter(
             server_url = server_url
         )
     if not assocs:
         return None
     associations = []
     for assoc in assocs:
         association = OIDAssociation(
             assoc.handle, base64.decodestring(assoc.secret), assoc.issued,
             assoc.lifetime, assoc.assoc_type
         )
         if association.getExpiresIn() == 0:
             self.removeAssociation(server_url, assoc.handle)
         else:
             associations.append((association.issued, association))
     if not associations:
         return None
     return associations[-1][1]
Exemplo n.º 4
0
    def getAssociation(self, server_url, handle=None):
        stored_assocs = OpenIDStore.objects.filter(
            server_url=server_url
        )
        if handle:
            stored_assocs = stored_assocs.filter(handle=handle)

        stored_assocs.order_by('-issued')

        if stored_assocs.count() == 0:
            return None

        return_val = None

        for stored_assoc in stored_assocs:
            assoc = OIDAssociation(
                stored_assoc.handle,
                base64.decodestring(stored_assoc.secret.encode('utf-8')),
                stored_assoc.issued, stored_assoc.lifetime,
                stored_assoc.assoc_type
            )
            # See:
            # necaris/python3-openid@1abb155c8fc7b508241cbe9d2cae24f18e4a379b
            if hasattr(assoc, 'getExpiresIn'):
                expires_in = assoc.getExpiresIn()
            else:
                expires_in = assoc.expiresIn
            if expires_in == 0:
                stored_assoc.delete()
            else:
                if return_val is None:
                    return_val = assoc

        return return_val
Exemplo n.º 5
0
    def txn_getAssociation(self, server_url, handle=None):
        """Get the most recent association that has been set for this
        server URL and handle.

        str -> NoneType or Association
        """
        if handle is not None:
            self.db_get_assoc(server_url, handle)
        else:
            self.db_get_assocs(server_url)

        rows = self.cur.fetchall()
        if len(rows) == 0:
            return None
        else:
            associations = []
            for values in rows:
                assoc = Association(*values)
                assoc.secret = self.blobDecode(assoc.secret)
                if assoc.getExpiresIn() == 0:
                    self.txn_removeAssociation(server_url, assoc.handle)
                else:
                    associations.append((assoc.issued, assoc))

            if associations:
                associations.sort()
                return associations[-1][1]
            else:
                return None
Exemplo n.º 6
0
        def getAssociation(self, server_url, handle = None):
                associations = None
                if handle is not None:
                        associations = OidStoreAssociation.objects.filter(server_url = server_url, handle = handle)
                else:
                        associations = OidStoreAssociation.objects.filter(server_url = server_url)
                if associations.count() == 0:
                        return None
                else:
                        assocs = []
                        for a in associations:
                                adata = [a.handle, self.blobDecode(a.secret), a.issued, a.lifetime, a.assoc_type]

                                assoc = Association(*adata)

                                if assoc.getExpiresIn() == 0:
                                        self.removeAssociation(server_url, assoc.handle)
                                else:
                                        assocs.append((assoc.issued, assoc))
                         
                        if assocs:
                                assocs.sort()
                                return assocs[-1][1]
                        else:
                                return None
Exemplo n.º 7
0
 def getAssociation(self, server_url, handle=None):
     assocs = []
     if handle is not None:
         assocs = Association.view('%s/url_handle_view' %
                                   Association._meta.app_label,
                                   key=[server_url, handle],
                                   include_docs=True).all()
     else:
         assocs = Association.view('%s/url_view' %
                                   Association._meta.app_label,
                                   key=server_url,
                                   include_docs=True).all()
     associations = []
     try:
         for assoc in assocs:
             association = OIDAssociation(
                 assoc['handle'], base64.decodestring(assoc['secret']),
                 assoc['issued'], assoc['lifetime'], assoc['assoc_type'])
             if association.getExpiresIn() == 0:
                 self.removeAssociation(server_url, assoc.handle)
             else:
                 associations.append((association.issued, association))
     except ResourceNotFound:
         pass
     if not associations:
         return None
     return associations[-1][1]
Exemplo n.º 8
0
    def getAssociation(self, server_url, handle=None):
        if handle is None:
            return None

        server_url_hash = hashlib.sha256(server_url).hexdigest()
        handle_hash = hashlib.sha256(handle).hexdigest()
        rowkey = "%s_%s" % (server_url_hash, handle_hash)
        
        try:
            assoc_rec = cass.getRecord(self._cf, rowkey)
        except cass.NotFoundError:
            return None
        except cass.DatabaseError:
            raise
        
        server_url = assoc_rec['server_url']
        handle = assoc_rec['handle']
        secret = assoc_rec['secret']
        issued = assoc_rec['issued']
        lifetime = assoc_rec['lifetime']
        assoc_type = assoc_rec['assoc_type']
        
        association = Association(handle, secret, issued, lifetime, assoc_type)
        
        if association.getExpiresIn() == 0:
            return None
        
        return association
Exemplo n.º 9
0
    def getAssociation(self, server_url, handle=None):
        q = (OpenIDAssociationData
            .all()
            .filter('idp_server_url =', server_url)
            .order('-issued'))
        
        if handle:
            q.filter('handle', handle)
        
        results = q.fetch(1)
        if not results:
            return None
        
        r = results[0]

        association = Association(r.handle, 
                                  r.secret, 
                                  r.issued, 
                                  r.lifetime, 
                                  r.assoc_type)
    
        if association.getExpiresIn(self.current_timestamp()) > 0:
            return association
        else:
            return None
Exemplo n.º 10
0
    def txn_getAssociation(self, server_url, handle=None):
        """Get the most recent association that has been set for this
        server URL and handle.

        str -> NoneType or Association
        """
        if handle is not None:
            self.db_get_assoc(server_url, handle)
        else:
            self.db_get_assocs(server_url)

        rows = self.cur.fetchall()
        if len(rows) == 0:
            return None
        else:
            associations = []
            for values in rows:
                assoc = Association(*values)
                assoc.secret = self.blobDecode(assoc.secret)
                if assoc.getExpiresIn() == 0:
                    self.txn_removeAssociation(server_url, assoc.handle)
                else:
                    associations.append((assoc.issued, assoc))

            if associations:
                associations.sort()
                return associations[-1][1]
            else:
                return None
Exemplo n.º 11
0
    def getAssociation(self, server_url, handle=None):
        assocs = []
        if handle is not None:
            assocs = Association.query.filter_by(
                server_url=server_url, handle=handle
            )
        else:
            assocs = Association.query.filter_by(
                server_url=server_url
            )

        if assocs.count() == 0:
            return None
        else:
            associations = []
            for assoc in assocs:
                association = OIDAssociation(
                    assoc.handle, base64.decodestring(assoc.secret),
                    assoc.issued, assoc.lifetime, assoc.assoc_type
                )
                if association.getExpiresIn() == 0:
                    assoc.delete()
                else:
                    associations.append((association.issued, association))

            if not associations:
                return None
            associations.sort()
            return associations[-1][1]
Exemplo n.º 12
0
    def getAssociation(self, server_url, handle=None):
        stored_assocs = OpenIDStoreModel.objects.filter(
            server_url=server_url
        )
        if handle:
            stored_assocs = stored_assocs.filter(handle=handle)

        stored_assocs.order_by('-issued')

        if stored_assocs.count() == 0:
            return None

        return_val = None

        for stored_assoc in stored_assocs:
            assoc = OIDAssociation(
                stored_assoc.handle, base64.decodestring(stored_assoc.secret),
                stored_assoc.issued, stored_assoc.lifetime, stored_assoc.assoc_type
            )

            if assoc.getExpiresIn() == 0:
                stored_assoc.delete()
            else:
                if return_val is None:
                    return_val = assoc

        return return_val
 def getAssociation(self, server_url, handle=None):
     assocs = []
     if handle is not None:
         assocs = OpenIdAssociation.objects.filter(
             server_url = server_url, handle = handle
         )
     else:
         assocs = OpenIdAssociation.objects.filter(
             server_url = server_url
         )
     if not assocs:
         return None
     associations = []
     for assoc in assocs:
         association = OIDAssociation(
             assoc.handle, base64.decodestring(assoc.secret), assoc.issued,
             assoc.lifetime, assoc.assoc_type
         )
         if association.getExpiresIn() == 0:
             self.removeAssociation(server_url, assoc.handle)
         else:
             associations.append((association.issued, association))
     if not associations:
         return None
     return associations[-1][1]
Exemplo n.º 14
0
    def txn_getAssociation(self, server_url, handle=None):
        """Get the most recent association that has been set for this
        server URL and handle.

        @type server_url: six.text_type, six.binary_type is deprecated
        @rtype: Optional[Association]
        """
        server_url = string_to_text(server_url, "Binary values for server_url are deprecated. Use text input instead.")

        if handle is not None:
            self.db_get_assoc(server_url, handle)
        else:
            self.db_get_assocs(server_url)

        rows = self.cur.fetchall()
        if len(rows) == 0:
            return None
        else:
            associations = []
            for values in rows:
                # Decode secret before association is created
                handle, secret, issued, lifetime, assoc_type = values
                secret = self.blobDecode(secret)
                assoc = Association(handle, secret, issued, lifetime, assoc_type)
                if assoc.getExpiresIn() == 0:
                    self.txn_removeAssociation(server_url, assoc.handle)
                else:
                    associations.append((assoc.issued, assoc))

            if associations:
                associations.sort()
                return associations[-1][1]
            else:
                return None
Exemplo n.º 15
0
    def getAssociation(self, server_url, handle=None):
        stored_assocs = OpenIDStoreModel.objects.filter(server_url=server_url)
        if handle:
            stored_assocs = stored_assocs.filter(handle=handle)

        stored_assocs.order_by('-issued')

        if stored_assocs.count() == 0:
            return None

        return_val = None

        for stored_assoc in stored_assocs:
            assoc = OIDAssociation(stored_assoc.handle,
                                   base64.decodestring(stored_assoc.secret),
                                   stored_assoc.issued, stored_assoc.lifetime,
                                   stored_assoc.assoc_type)

            if assoc.getExpiresIn() == 0:
                stored_assoc.delete()
            else:
                if return_val is None:
                    return_val = assoc

        return return_val
Exemplo n.º 16
0
    def getAssociation(self, server_url, handle=None):
        assocs = []
        if handle is not None:
            assocs = Association.objects.filter(server_url=server_url,
                                                handle=handle)
        else:
            assocs = Association.objects.filter(server_url=server_url)
        if not assocs:
            return None
        associations = []
        expired = []
        for assoc in assocs:
            association = OIDAssociation(assoc.handle,
                                         base64.decodestring(assoc.secret),
                                         assoc.issued, assoc.lifetime,
                                         assoc.assoc_type)
            if association.getExpiresIn() == 0:
                expired.append(assoc)
            else:
                associations.append((association.issued, association))

        for assoc in expired:
            assoc.delete()
        if not associations:
            return None
        associations.sort()
        return associations[-1][1]
Exemplo n.º 17
0
Arquivo: samadhi.py Projeto: ccoss/fas
 def getAssociation(self, server_url, handle=None):
     results = SamadhiAssociation.get(server_url, handle)
     for a in results:
         assoc = OpenIDAssociation(a.handle, a.secret, a.issued, a.lifetime,
                                   a.assoc_type)
         if assoc.getExpiresIn() == 0:
             SamadhiAssociation.remove(server_url, assoc.handle)
         else:
             return assoc
     return None
Exemplo n.º 18
0
 def getAssociation(self, server_url, handle=None):
     q = OpenIDAssociation.query.filter_by(server_url=server_url)
     if handle is not None:
         q = q.filter_by(handle=handle)
     result_assoc = None
     for item in q.all():
         assoc = Association(item.handle, item.secret.decode("base64"), item.issued, item.lifetime, item.assoc_type)
         if assoc.getExpiresIn() <= 0:
             self.removeAssociation(server_url, assoc.handle)
         else:
             result_assoc = assoc
     return result_assoc
Exemplo n.º 19
0
 def getAssociation(self, server_url, handle=None):
     q = OpenIDAssociation.query.filter_by(server_url=server_url)
     if handle is not None:
         q = q.filter_by(handle=handle)
     result_assoc = None
     for item in q.all():
         assoc = Association(item.handle, item.secret.decode('base64'),
                             item.issued, item.lifetime, item.assoc_type)
         if assoc.getExpiresIn() <= 0:
             self.removeAssociation(server_url, assoc.handle)
         else:
             result_assoc = assoc
     return result_assoc
Exemplo n.º 20
0
Arquivo: samadhi.py Projeto: Affix/fas
 def getAssociation(self, server_url, handle=None):
     results = SamadhiAssociation.get(server_url, handle)
     for a in results:
         assoc = OpenIDAssociation(a.handle,
                                   a.secret,
                                   a.issued,
                                   a.lifetime,
                                   a.assoc_type)
         if assoc.getExpiresIn() == 0:
             SamadhiAssociation.remove(server_url, assoc.handle)
         else:
             return assoc
     return None
Exemplo n.º 21
0
 def getAssociation(self, server_url, handle=None):
     filter = openid_association.c.server_url == server_url
     if handle is not None:
         filter &= openid_association.c.handle == handle
     with self.connection() as con:
         result = con.execute(openid_association.select(filter))
         result_assoc = None
         for row in result.fetchall():
             assoc = Association(row.handle, row.secret.decode('base64'),
                                 row.issued, row.lifetime, row.assoc_type)
             if assoc.getExpiresIn() <= 0:
                 self.removeAssociation(server_url, assoc.handle)
             else:
                 result_assoc = assoc
         return result_assoc
Exemplo n.º 22
0
 def getAssociation(self, server_url, handle=None):
     filter = openid_association.c.server_url == server_url
     if handle is not None:
         filter &= openid_association.c.handle == handle
     with self.connection() as con:
         result = con.execute(openid_association.select(filter))
         result_assoc = None
         for row in result.fetchall():
             assoc = Association(row.handle, row.secret.decode('base64'),
                                 row.issued, row.lifetime, row.assoc_type)
             if assoc.getExpiresIn() <= 0:
                 self.removeAssociation(server_url, assoc.handle)
             else:
                 result_assoc = assoc
         return result_assoc
Exemplo n.º 23
0
    def getAssociation(self, server_url, handle=None):
        q = OpenIDAssociationData.all().filter("idp_server_url =", server_url).order("-issued")

        if handle:
            q.filter("handle", handle)

        results = q.fetch(1)
        if not results:
            return None

        r = results[0]

        association = Association(r.handle, r.secret, r.issued, r.lifetime, r.assoc_type)

        if association.getExpiresIn(self.current_timestamp()) > 0:
            return association
        else:
            return None
Exemplo n.º 24
0
    def handle(self, *args, **options):
        from social_auth.models import Association
        print('Clearing expired Association instances')
        timestamp = time.time() + Signatory.SECRET_LIFETIME
        associations = Association.objects.filter(issued__lt=timestamp)
        remove = []

        for assoc in associations:
            oid = OIDAssociation(assoc.handle,
                                 base64.decodestring(assoc.secret),
                                 assoc.issued,
                                 assoc.lifetime,
                                 assoc.assoc_type)
            if oid.getExpiresIn() == 0:
                remove.append(assoc.pk)
        if remove:
            print('Cleaning %s Associations' % len(remove))
            Association.filter(pk__in=remove).delete()
        else:
            print('No Associations to remove')
Exemplo n.º 25
0
    def getAssociation(self, server_url, handle=None):
        kwargs = {'server_url': server_url}
        if handle:
            kwargs['handle'] = handle

        openid_assocs = []
        for assoc in Association.objects.filter(**kwargs).order_by('-issued'):
            openid_assoc = OpenidAssociation(assoc.handle,
                                             base64.decodestring(assoc.secret),
                                             assoc.issued,
                                             assoc.lifetime,
                                             assoc.assoc_type)

            if openid_assoc.getExpiresIn() > 0:
                openid_assocs.append(openid_assoc)
            else:
                assoc.delete()

        if openid_assocs:
            return openid_assocs[0]
Exemplo n.º 26
0
 def getAssociation(self, server_url, handle=None):
     assocs = []
     if handle is not None:
         assocs = Association.objects.filter(
             server_url=server_url, handle=handle)
     else:
         assocs = Association.objects.filter(server_url=server_url)
     associations = []
     expired = []
     for assoc in assocs:
         if isinstance(assoc.secret, str) and PY3:
             try:
                 assoc.secret = assoc.secret.split("b'")[1].split("'")[0]
             except Exception:
                 pass
             assoc.secret = bytes(assoc.secret, 'utf-8')
         if isinstance(assoc.secret, bytes) and PY3:
             assoc.secret = bytes(assoc.secret.decode('utf-8').rstrip(), 'utf-8')
         if PY3:
             decoded = base64.decodebytes(assoc.secret)
         else:
             decoded = base64.decodestring(assoc.secret)
         association = OIDAssociation(
             assoc.handle,
             decoded,
             assoc.issued, assoc.lifetime, assoc.assoc_type
         )
         if PY3:
             expires_in = association.expiresIn
         else:
             expires_in = association.getExpiresIn()
         if expires_in == 0:
             expired.append(assoc)
         else:
             associations.append((association.issued, association))
     for assoc in expired:
         assoc.delete()
     if not associations:
         return None
     associations.sort()
     return associations[-1][1]
Exemplo n.º 27
0
 def getAssociation(self, url, handle=None):
     params = {"url": url}
     if handle is None:
         cursor = self._conn.cursor().query(self.get_assocs_sql, params)
     else:
         params["handle"] = handle
         cursor = self._conn.cursor().query(self.get_assoc_sql, params)
     if not cursor.count:
         return None
     assocs = []
     for row in cursor:
         assoc = Association(row["handle"], row["secret"], row["issued"], row["lifetime"], row["type"])
         if assoc.getExpiresIn() == 0:
             self.removeAssociation(url, assoc.handle)
         else:
             assocs.append((assoc.issued, assoc))
     if assocs:
         assocs.sort()
         return assocs[-1][1]
     else:
         return None
Exemplo n.º 28
0
    def getAssociation(self, server_url, handle=None):
        """Return stored assocition"""
        args = {'server_url': server_url}
        if handle is not None:
            args['handle'] = handle

        associations, expired = [], []
        for assoc in Association.objects.filter(**args):
            association = OIDAssociation(assoc.handle,
                                         base64.decodestring(assoc.secret),
                                         assoc.issued, assoc.lifetime,
                                         assoc.assoc_type)
            if association.getExpiresIn() == 0:
                expired.append(assoc.id)
            else:
                associations.append(association)

        if expired:  # clear expired associations
            Association.objects.filter(pk__in=expired).delete()

        if associations:  # return most recet association
            associations.sort(key=lambda x: x.issued, reverse=True)
            return associations[0]
Exemplo n.º 29
0
    def getAssociation(self, server_url, handle=None):
        """Return stored assocition"""
        args = {'server_url': server_url}
        if handle is not None:
            args['handle'] = handle

        associations, expired = [], []
        for assoc in Association.objects.filter(**args):
            association = OIDAssociation(assoc.handle,
                                         base64.decodestring(assoc.secret),
                                         assoc.issued,
                                         assoc.lifetime,
                                         assoc.assoc_type)
            if association.getExpiresIn() == 0:
                expired.append(assoc.id)
            else:
                associations.append(association)

        if expired:  # clear expired associations
            Association.objects.filter(pk__in=expired).delete()

        if associations: # return most recet association
            associations.sort(key=lambda x: x.issued, reverse=True)
            return associations[0]
Exemplo n.º 30
0
 def getAssociation(self, server_url, handle=None):  # pragma: no cover
     '''
     Helper method to get associations
     '''
     assocs = []
     if handle is not None:
         assocs = OpenIDAssociation.objects.filter(  # pylint: disable=no-member
             server_url=server_url,
             handle=handle)
     else:
         assocs = OpenIDAssociation.objects.filter(  # pylint: disable=no-member
             server_url=server_url)
     if not assocs:
         return None
     associations = []
     for assoc in assocs:
         if isinstance(assoc.secret, str):
             assoc.secret = assoc.secret.split("b'")[1].split("'")[0]
             assoc.secret = bytes(assoc.secret, 'utf-8')
         association = OIDAssociation(assoc.handle,
                                      base64.decodebytes(assoc.secret),
                                      assoc.issued, assoc.lifetime,
                                      assoc.assoc_type)
         expires = 0
         try:
             # pylint: disable=no-member
             expires = association.getExpiresIn()
         except AttributeError:
             expires = association.expiresIn
         if expires == 0:
             self.removeAssociation(server_url, assoc.handle)
         else:
             associations.append((association.issued, association))
     if not associations:
         return None
     return associations[-1][1]
Exemplo n.º 31
0
 def getAssociation(self, server_url, handle=None):
     assocs = []
     if handle is not None:
         assocs = Association.view('%s/url_handle_view' % Association._meta.app_label,
                                   key=[server_url, handle], include_docs=True).all()
     else:
         assocs = Association.view('%s/url_view' % Association._meta.app_label,
                                     key=server_url, include_docs=True).all()
     associations = []
     try:
         for assoc in assocs:
             association = OIDAssociation(
                 assoc['handle'], base64.decodestring(assoc['secret']), assoc['issued'],
                 assoc['lifetime'], assoc['assoc_type']
                 )
             if association.getExpiresIn() == 0:
                 self.removeAssociation(server_url, assoc.handle)
             else:
                 associations.append((association.issued, association))
     except ResourceNotFound:
         pass
     if not associations:
         return None
     return associations[-1][1]