Ejemplo n.º 1
0
class TestToken(object):
    @pytest.fixture(autouse=True)
    def create_token(self):
        self.token = DefaultToken("secret", "password", lifetime={'': 60})

    def test_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

    def test_new_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

        code2 = self.token(sid=sid, ttype='T')
        assert len(sid) == 56

        sid2 = self.token.key(areq=AREQ, user="******")
        assert len(sid2) == 56
        assert sid != sid2

    def test_type_and_key(self):
        sid = self.token.key(areq=AREQ)
        code = self.token(sid=sid)
        part = self.token.type_and_key(code)
        assert part[0] == "A"
        assert part[1] == sid
Ejemplo n.º 2
0
class TestToken(object):
    @pytest.fixture(autouse=True)
    def create_token(self):
        self.token = DefaultToken("secret", "password", lifetime={'': 60})

    def test_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

    def test_new_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

        self.token(sid=sid, ttype='T')
        assert len(sid) == 56

        sid2 = self.token.key(areq=AREQ, user="******")
        assert len(sid2) == 56
        assert sid != sid2

    def test_type_and_key(self):
        sid = self.token.key(areq=AREQ)
        code = self.token(sid=sid)
        part = self.token.type_and_key(code)
        assert part[0] == "A"
        assert part[1] == sid
Ejemplo n.º 3
0
 def test_expired_stale(self):
     initial_datetime = datetime.datetime(2018, 2, 5, 10, 0, 0, 0)
     final_datetime = datetime.datetime(2018, 2, 5, 10, 1, 0, 0)
     factory = DefaultToken('secret', 'password', lifetime=2)
     with freeze_time(initial_datetime) as frozen:
         token = factory(sid="abc", ttype="T")
         frozen.move_to(final_datetime)
         assert factory.is_expired(token) is True
Ejemplo n.º 4
0
    def create_provider(self):
        kb = KeyBundle(JWKS["keys"])
        kj = KeyJar()
        kj.issuer_keys[''] = [kb]

        _sdb = SessionDB("https://example.com/",
                         db={},
                         code_factory=DefaultToken('supersecret',
                                                   'verybadpassword',
                                                   typ='A',
                                                   lifetime=600),
                         token_factory=JWTToken('T',
                                                keyjar=kj,
                                                lt_pattern={
                                                    'code': 3600,
                                                    'token': 900
                                                },
                                                iss='https://example.com/as',
                                                sign_alg='RS256'),
                         refresh_token_factory=JWTToken(
                             'R',
                             keyjar=kj,
                             lt_pattern={'': 24 * 3600},
                             iss='https://example.com/as'))
        #  name, sdb, cdb, authn_broker, authz, client_authn,
        self.provider = Provider("as",
                                 _sdb,
                                 CDB,
                                 AUTHN_BROKER,
                                 AUTHZ,
                                 verify_client,
                                 baseurl='https://example.com/as')
Ejemplo n.º 5
0
    def create_sdb(self):
        kb = KeyBundle(JWKS["keys"])
        kj = KeyJar()
        kj.issuer_keys[""] = [kb]

        self.sdb = SessionDB(
            "https://example.com/",
            db=DictSessionBackend(),
            code_factory=DefaultToken("supersecret",
                                      "verybadpassword",
                                      typ="A",
                                      lifetime=600),
            token_factory=JWTToken(
                "T",
                keyjar=kj,
                lt_pattern={
                    "code": 3600,
                    "token": 900
                },
                iss="https://example.com/as",
                sign_alg="RS256",
            ),
            refresh_token_factory=JWTToken(
                "R",
                keyjar=kj,
                lt_pattern={"": 24 * 3600},
                iss="https://example.com/as",
                token_storage={},
            ),
        )
Ejemplo n.º 6
0
class TestToken(object):
    @pytest.fixture(autouse=True)
    def create_token(self):
        self.token = DefaultToken("secret", "password", lifetime=60)

    def test_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

    def test_new_token(self):
        sid = self.token.key(areq=AREQ)
        assert len(sid) == 56

        self.token(sid=sid, ttype='T')
        assert len(sid) == 56

        sid2 = self.token.key(areq=AREQ, user="******")
        assert len(sid2) == 56
        assert sid != sid2

    def test_type_and_key(self):
        sid = self.token.key(areq=AREQ)
        code = self.token(sid=sid)
        part = self.token.type_and_key(code)
        assert part[0] == "A"
        assert part[1] == sid

    def test_expired_fresh(self):
        factory = DefaultToken('secret', 'password', lifetime=60)
        token = factory(sid="abc", ttype="T")
        assert factory.is_expired(token) is False

    def test_expired_stale(self):
        initial_datetime = datetime.datetime(2018, 2, 5, 10, 0, 0, 0)
        final_datetime = datetime.datetime(2018, 2, 5, 10, 1, 0, 0)
        factory = DefaultToken('secret', 'password', lifetime=2)
        with freeze_time(initial_datetime) as frozen:
            token = factory(sid="abc", ttype="T")
            frozen.move_to(final_datetime)
            assert factory.is_expired(token) is True

    def test_expired_when(self):
        factory = DefaultToken('secret', 'password', lifetime=2)
        token = factory(sid="abc", ttype="T")
        when = time.time() + 5  # 5 seconds from now
        assert factory.is_expired(token, when=when) is True
Ejemplo n.º 7
0
    def create_provider(self):
        kb = KeyBundle(JWKS["keys"])
        kj = KeyJar()
        kj.issuer_keys[""] = [kb]

        _sdb = SessionDB(
            "https://example.com/",
            db=DictSessionBackend(),
            code_factory=DefaultToken("supersecret",
                                      "verybadpassword",
                                      typ="A",
                                      lifetime=600),
            token_factory=JWTToken(
                "T",
                keyjar=kj,
                lt_pattern={
                    "code": 3600,
                    "token": 900
                },
                iss="https://example.com/as",
                sign_alg="RS256",
            ),
            refresh_token_factory=JWTToken(
                "R",
                keyjar=kj,
                lt_pattern={"": 24 * 3600},
                iss="https://example.com/as",
                token_storage={},
            ),
        )
        #  name, sdb, cdb, authn_broker, authz, client_authn,
        self.provider = Provider(
            "as",
            _sdb,
            CDB,
            AUTHN_BROKER,
            AUTHZ,
            verify_client,
            baseurl="https://example.com/as",
        )
Ejemplo n.º 8
0
    def create_sdb(self):
        kb = KeyBundle(JWKS["keys"])
        kj = KeyJar()
        kj.issuer_keys[''] = [kb]

        self.sdb = SessionDB(
            "https://example.com/",
            db={},
            code_factory=DefaultToken('supersecret',
                                      'verybadpassword',
                                      typ='A',
                                      lifetime=600),
            token_factory=JWTToken('T',
                                   keyjar=kj,
                                   lt_pattern={
                                       'code': 3600,
                                       'token': 900
                                   },
                                   iss='https://example.com/as',
                                   sign_alg='RS256'),
            refresh_token_factory=JWTToken('R',
                                           keyjar=kj,
                                           lt_pattern={'': 24 * 3600},
                                           iss='https://example.com/as'))
Ejemplo n.º 9
0
 def create_token(self):
     self.token = DefaultToken("secret", "password", lifetime={'': 60})
Ejemplo n.º 10
0
 def create_token(self):
     self.token = DefaultToken("secret", "password", lifetime={'': 60})
Ejemplo n.º 11
0
 def test_expired_when(self):
     factory = DefaultToken('secret', 'password', lifetime=2)
     token = factory(sid="abc", ttype="T")
     when = time.time() + 5  # 5 seconds from now
     assert factory.is_expired(token, when=when) is True
Ejemplo n.º 12
0
 def test_expired_fresh(self):
     factory = DefaultToken('secret', 'password', lifetime=60)
     token = factory(sid="abc", ttype="T")
     assert factory.is_expired(token) is False
Ejemplo n.º 13
0
        exit()
        # oas.key_setup("static", sig={"format": "jwk", "alg": "rsa"})
    else:
        jwks_file_name = JWKS_FILE_NAME
        f = open(jwks_file_name, "w")

        for key in jwks["keys"]:
            for k in key.keys():
                key[k] = as_unicode(key[k])

        f.write(json.dumps(jwks))
        f.close()
        oas.jwks_uri = "{}/{}".format(oas.baseurl, jwks_file_name)

    # Initiate the SessionDB
    _code = DefaultToken(rndstr(32), rndstr(32), typ='A', lifetime=600)
    _token = JWTToken('T',
                      oas.keyjar, {
                          'code': 3600,
                          'token': 900
                      },
                      iss=config.issuer,
                      sign_alg='RS256')
    _refresh_token = JWTToken('R',
                              oas.keyjar, {'': 86400},
                              iss=config.issuer,
                              sign_alg='RS256')
    oas.sdb = SessionDB(config.SERVICE_URL,
                        db={},
                        code_factory=_code,
                        token_factory=_token,