def _bind_sdk(target, sdk_type, device_id=None):
    from azext_iot.device_sdk.iot_hub_gateway_device_apis import IotHubGatewayDeviceAPIs
    from azext_iot.service_sdk.iot_hub_gateway_service_apis import IotHubGatewayServiceAPIs

    from azext_iot.custom_sdk.custom_api import CustomClient
    from azext_iot.dps_sdk import ProvisioningServiceClient

    sas_uri = target['entity']
    endpoint = "https://{}".format(sas_uri)
    if device_id:
        sas_uri = '{}/devices/{}'.format(sas_uri, device_id)

    if sdk_type is SdkType.device_sdk:
        return (
            IotHubGatewayDeviceAPIs(
                SasTokenAuthentication(
                    sas_uri, target['policy'], target['primarykey']),
                endpoint),
            _get_sdk_exception_type(sdk_type)
        )

    if sdk_type is SdkType.service_sdk:
        return (
            IotHubGatewayServiceAPIs(
                SasTokenAuthentication(
                    sas_uri, target['policy'], target['primarykey']),
                endpoint),
            _get_sdk_exception_type(sdk_type)
        )

    if sdk_type is SdkType.custom_sdk:
        return (
            CustomClient(
                SasTokenAuthentication(
                    sas_uri, target['policy'], target['primarykey']),
                endpoint),
            _get_sdk_exception_type(sdk_type)
        )

    if sdk_type is SdkType.dps_sdk:
        return (
            ProvisioningServiceClient(
                SasTokenAuthentication(
                    sas_uri, target['policy'], target['primarykey']),
                endpoint),
            _get_sdk_exception_type(sdk_type)
        )

    return None
def fixture_sas(mocker):
    r = SasTokenAuthentication(
        mock_target["entity"], mock_target["policy"], mock_target["primarykey"]
    )
    sas = mocker.patch(path_sas)
    sas.return_value = r
    return sas
示例#3
0
    def __init__(self, target, device_id):
        self.target = target
        self.device_id = device_id

        sas = SasTokenAuthentication(target['entity'], target['policy'],
                                     target['primarykey'],
                                     time() + 360).generate_sas_token()
        cwd = EXTENSION_ROOT
        cert_path = os.path.join(cwd, 'digicert.pem')
        auth = {
            'username':
            '******'.format(target['entity'], device_id),
            'password':
            sas
        }
        tls = {'ca_certs': cert_path, 'tls_version': ssl.PROTOCOL_SSLv23}
        self.topic_publish = 'devices/{}/messages/events/'.format(device_id)
        self.topic_receive = 'devices/{}/messages/devicebound/#'.format(
            device_id)
        self.connected = False

        self.client = mqtt.Client(protocol=mqtt.MQTTv311, client_id=device_id)
        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message
        self.client.on_publish = self.on_publish
        self.client.tls_set(ca_certs=tls['ca_certs'],
                            tls_version=tls['tls_version'])
        self.client.username_pw_set(username=auth['username'], password=sas)
        self.client.connect(host=self.target['entity'], port=8883)
    def __init__(self, target, device_id, properties=None, sas_duration=3600):
        self.target = target
        self.device_id = device_id

        sas = SasTokenAuthentication(
            target["entity"],
            target["policy"],
            target["primarykey"],
            sas_duration,
        ).generate_sas_token()
        cwd = EXTENSION_ROOT
        cert_path = os.path.join(cwd, "digicert.pem")
        tls = {"ca_certs": cert_path, "tls_version": ssl.PROTOCOL_SSLv23}
        self.topic_publish = "devices/{}/messages/events/{}".format(
            device_id,
            url_encode_dict(properties) if properties else "")
        self.topic_receive = "devices/{}/messages/devicebound/#".format(
            device_id)
        self.connected = False

        self.client = mqtt.Client(protocol=mqtt.MQTTv311, client_id=device_id)
        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message
        self.client.on_publish = self.on_publish
        self.client.tls_set(ca_certs=tls["ca_certs"],
                            tls_version=tls["tls_version"])
        self.client.username_pw_set(username=build_mqtt_device_username(
            target["entity"], device_id),
                                    password=sas)
        self.client.connect(host=self.target["entity"], port=8883)
def _bind_sdk(target, sdk_type, device_id=None, auth=None):
    from azext_iot.sdk.service.iot_hub_gateway_service_apis import IotHubGatewayServiceAPIs
    from azext_iot.sdk.dps import ProvisioningServiceClient
    from azext_iot.sdk.pnp.digital_twin_repository_service import DigitalTwinRepositoryService

    sas_uri = target['entity']
    endpoint = "https://{}".format(sas_uri)
    if device_id:
        sas_uri = '{}/devices/{}'.format(sas_uri, device_id)

    if sdk_type is SdkType.pnp_sdk:
        return (DigitalTwinRepositoryService(endpoint),
                _get_sdk_exception_type(sdk_type))

    if not auth:
        auth = SasTokenAuthentication(sas_uri, target['policy'],
                                      target['primarykey'])

    if sdk_type is SdkType.service_sdk:
        return (IotHubGatewayServiceAPIs(auth, endpoint),
                _get_sdk_exception_type(sdk_type))

    if sdk_type is SdkType.dps_sdk:
        return (ProvisioningServiceClient(auth, endpoint),
                _get_sdk_exception_type(sdk_type))

    return None
示例#6
0
 def build_iothub_amqp_endpoint_from_target(self, target, duration=360):
     hub_name = target['entity'].split('.')[0]
     user = "******".format(target['policy'], hub_name)
     sas_token = SasTokenAuthentication(
         target['entity'], target['policy'], target['primarykey'],
         time() + duration).generate_sas_token()
     return url_encode_str(user) + ":{}@{}".format(
         url_encode_str(sas_token), target['entity'])
 def build_iothub_amqp_endpoint_from_target(cls, target, duration=360):
     hub_name = target["entity"].split(".")[0]
     user = "******".format(target["policy"], hub_name)
     sas_token = SasTokenAuthentication(target["entity"], target["policy"],
                                        target["primarykey"],
                                        duration).generate_sas_token()
     return url_encode_str(user) + ":{}@{}".format(
         url_encode_str(sas_token), target["entity"])
    def _get_iothub_service_sdk(self):
        from azext_iot.sdk.iothub.service import IotHubGatewayServiceAPIs
        credentials = SasTokenAuthentication(
            uri=self.sas_uri,
            shared_access_policy_name=self.target['policy'],
            shared_access_key=self.target['primarykey'])

        return IotHubGatewayServiceAPIs(credentials=credentials,
                                        base_url=self.endpoint)
示例#9
0
    def _get_dps_service_sdk(self):
        from azext_iot.sdk.dps.service import ProvisioningServiceClient

        credentials = SasTokenAuthentication(
            uri=self.sas_uri,
            shared_access_policy_name=self.target["policy"],
            shared_access_key=self.target["primarykey"],
        )

        return ProvisioningServiceClient(credentials=credentials,
                                         base_url=self.endpoint)
示例#10
0
    def test_generate_sas_token_from_cs(self, mocker, fixture_cmd, duration, req):
        patched_time = mocker.patch(
            "azext_iot.common.sas_token_auth.time"
        )
        patched_time.return_value = 0
        result = subject.iot_get_sas_token(
            cmd=fixture_cmd,
            connection_string=req["connection_string"],
            duration=duration
        )

        duration = duration if duration else 3600
        expected_sas = SasTokenAuthentication(
            req["uri"], req["policy"], req["key"], duration
        ).generate_sas_token()
        assert result["sas"] == expected_sas
示例#11
0
def _bind_sdk(target, sdk_type, device_id=None):
    from azext_iot.device_query_sdk.device_identities_api import DeviceIdentitiesAPI
    from azext_iot.device_twin_sdk.device_twin_api import DeviceTwinAPI
    from azext_iot.modules_sdk.iot_hub_client import IotHubClient
    from azext_iot.device_msg_sdk.iot_hub_device_client import IotHubDeviceClient
    from azext_iot.custom_sdk.custom_api import CustomClient
    from azext_iot.dps_sdk import DeviceProvisioningServiceServiceRuntimeClient

    sas_uri = target['entity']
    endpoint = "https://{}".format(sas_uri)
    if device_id:
        sas_uri = '{}/devices/{}'.format(sas_uri, device_id)
    subscription_id = target.get('subscription', None)

    if sdk_type is SdkType.device_query_sdk:
        return (DeviceIdentitiesAPI(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']),
            endpoint), _get_sdk_exception_type(sdk_type))

    elif sdk_type is SdkType.device_twin_sdk:
        return (DeviceTwinAPI(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']),
            endpoint), _get_sdk_exception_type(sdk_type))

    elif sdk_type is SdkType.modules_sdk:
        return (IotHubClient(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']), subscription_id,
            endpoint), _get_sdk_exception_type(sdk_type))

    elif sdk_type is SdkType.device_msg_sdk:
        return (IotHubDeviceClient(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']),
            subscription_id,
            base_url=endpoint), _get_sdk_exception_type(sdk_type))

    elif sdk_type is SdkType.custom_sdk:
        return (CustomClient(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']),
            endpoint), _get_sdk_exception_type(sdk_type))

    elif sdk_type is SdkType.dps_sdk:
        return (DeviceProvisioningServiceServiceRuntimeClient(
            SasTokenAuthentication(sas_uri, target['policy'],
                                   target['primarykey']),
            endpoint), _get_sdk_exception_type(sdk_type))

    return None
示例#12
0
    def _get_iothub_service_sdk(self):
        from azext_iot.sdk.iothub.service import IotHubGatewayServiceAPIs

        credentials = None

        if self.auth_override:
            credentials = self.auth_override
        elif self.target["policy"] == AuthenticationTypeDataplane.login.value:
            credentials = IoTHubOAuth(cmd=self.target["cmd"],
                                      resource_id=IOTHUB_RESOURCE_ID)
        else:
            credentials = SasTokenAuthentication(
                uri=self.sas_uri,
                shared_access_policy_name=self.target["policy"],
                shared_access_key=self.target["primarykey"],
            )

        return IotHubGatewayServiceAPIs(credentials=credentials,
                                        base_url=self.endpoint)
def fixture_sas(mocker):
    r = SasTokenAuthentication(mock_target['entity'], mock_target['policy'],
                               mock_target['primarykey'])
    sas = mocker.patch(path_sas)
    sas.return_value = r