예제 #1
0
    def _create_auth(self, username=None, password=None):
        """
        Create an ~uamqp.authentication.SASTokenAuth instance to authenticate
        the session.

        :param username: The name of the shared access policy.
        :type username: str
        :param password: The shared access key.
        :type password: str
        """
        if self.sas_token:
            token = self.sas_token() if callable(self.sas_token) else self.sas_token
            try:
                expiry = int(parse_sas_token(token)['se'])
            except (KeyError, TypeError, IndexError):
                raise ValueError("Supplied SAS token has no valid expiry value.")
            return authentication.SASTokenAuth(
                self.auth_uri, self.auth_uri, token,
                expires_at=expiry,
                timeout=self.auth_timeout,
                http_proxy=self.http_proxy)

        username = username or self._auth_config['username']
        password = password or self._auth_config['password']
        if "@sas.root" in username:
            return authentication.SASLPlain(
                self.address.hostname, username, password, http_proxy=self.http_proxy)
        return authentication.SASTokenAuth.from_shared_access_key(
            self.auth_uri, username, password, timeout=self.auth_timeout, http_proxy=self.http_proxy)
예제 #2
0
def test_event_hubs_custom_end_point():
    sas_token = authentication.SASTokenAuth(
        "fake_audience",
        "fake_uri",
        "fake_token",
        expires_in=timedelta(10),
        custom_endpoint_hostname="123.45.67.89")
    assert sas_token.hostname == b"123.45.67.89"

    sas_token = authentication.SASTokenAuth.from_shared_access_key(
        "fake_uri",
        "fake_key_name",
        "fake_key",
        custom_endpoint_hostname="123.45.67.89")
    assert sas_token.hostname == b"123.45.67.89"

    def fake_get_token():
        return "fake get token"

    jwt_token = authentication.JWTTokenAuth(
        "fake_audience",
        "fake_uri",
        fake_get_token,
        custom_endpoint_hostname="123.45.67.89")
    assert jwt_token.hostname == b"123.45.67.89"
예제 #3
0
    def _create_auth(self, username=None, password=None):
        """
        Create an ~uamqp.authentication.SASTokenAuth instance to authenticate
        the session.

        :param username: The name of the shared access policy.
        :type username: str
        :param password: The shared access key.
        :type password: str
        """
        http_proxy = self._config.http_proxy
        transport_type = self._config.transport_type
        auth_timeout = self._config.auth_timeout

        # TODO: the following code can be refactored to create auth from classes directly instead of using if-else
        if isinstance(self._credential, EventHubSharedKeyCredential):  # pylint:disable=no-else-return
            username = username or self._auth_config['username']
            password = password or self._auth_config['password']
            if "@sas.root" in username:
                return authentication.SASLPlain(self._host,
                                                username,
                                                password,
                                                http_proxy=http_proxy,
                                                transport_type=transport_type)
            return authentication.SASTokenAuth.from_shared_access_key(
                self._auth_uri,
                username,
                password,
                timeout=auth_timeout,
                http_proxy=http_proxy,
                transport_type=transport_type)

        elif isinstance(self._credential, EventHubSASTokenCredential):
            token = self._credential.get_sas_token()
            try:
                expiry = int(parse_sas_token(token)['se'])
            except (KeyError, TypeError, IndexError):
                raise ValueError(
                    "Supplied SAS token has no valid expiry value.")
            return authentication.SASTokenAuth(self._auth_uri,
                                               self._auth_uri,
                                               token,
                                               expires_at=expiry,
                                               timeout=auth_timeout,
                                               http_proxy=http_proxy,
                                               transport_type=transport_type)

        else:  # Azure credential
            get_jwt_token = functools.partial(
                self._credential.get_token,
                'https://eventhubs.azure.net//.default')
            return authentication.JWTTokenAuth(self._auth_uri,
                                               self._auth_uri,
                                               get_jwt_token,
                                               http_proxy=http_proxy,
                                               transport_type=transport_type)
예제 #4
0
    def _create_auth(self):
        """
        Create an ~uamqp.authentication.SASTokenAuth instance to authenticate
        the session.
        """
        http_proxy = self._config.http_proxy
        transport_type = self._config.transport_type
        auth_timeout = self._config.auth_timeout

        # TODO: the following code can be refactored to create auth from classes directly instead of using if-else
        if isinstance(self._credential, EventHubSharedKeyCredential):  # pylint:disable=no-else-return
            username = self._credential.policy
            password = self._credential.key
            if "@sas.root" in username:
                return authentication.SASLPlain(self._address.hostname,
                                                username,
                                                password,
                                                http_proxy=http_proxy,
                                                transport_type=transport_type)
            return authentication.SASTokenAuth.from_shared_access_key(
                self._auth_uri,
                username,
                password,
                timeout=auth_timeout,
                http_proxy=http_proxy,
                transport_type=transport_type)

        elif isinstance(self._credential, EventHubSASTokenCredential):
            token = self._credential.get_sas_token()
            try:
                expiry = int(parse_sas_token(token)['se'])
            except (KeyError, TypeError, IndexError):
                raise ValueError(
                    "Supplied SAS token has no valid expiry value.")
            return authentication.SASTokenAuth(self._auth_uri,
                                               self._auth_uri,
                                               token,
                                               expires_at=expiry,
                                               timeout=auth_timeout,
                                               http_proxy=http_proxy,
                                               transport_type=transport_type)

        else:  # Azure credential
            get_jwt_token = functools.partial(self._credential.get_token,
                                              JWT_TOKEN_SCOPE)
            return authentication.JWTTokenAuth(self._auth_uri,
                                               self._auth_uri,
                                               get_jwt_token,
                                               http_proxy=http_proxy,
                                               transport_type=transport_type)