def __init__(self, settings: BotFrameworkAdapterSettings):
        super(BotFrameworkAdapter, self).__init__()
        self.settings = settings or BotFrameworkAdapterSettings("", "")
        self.settings.channel_service = self.settings.channel_service or os.environ.get(
            AuthenticationConstants.CHANNEL_SERVICE
        )
        self.settings.open_id_metadata = (
            self.settings.open_id_metadata
            or os.environ.get(AuthenticationConstants.BOT_OPEN_ID_METADATA_KEY)
        )
        self._credentials = MicrosoftAppCredentials(
            self.settings.app_id,
            self.settings.app_password,
            self.settings.channel_auth_tenant,
        )
        self._credential_provider = SimpleCredentialProvider(
            self.settings.app_id, self.settings.app_password
        )
        self._is_emulating_oauth_cards = False

        if self.settings.open_id_metadata:
            ChannelValidation.open_id_metadata_endpoint = self.settings.open_id_metadata
            GovernmentChannelValidation.OPEN_ID_METADATA_ENDPOINT = (
                self.settings.open_id_metadata
            )

        if JwtTokenValidation.is_government(self.settings.channel_service):
            self._credentials.oauth_endpoint = (
                GovernmentConstants.TO_CHANNEL_FROM_BOT_LOGIN_URL
            )
            self._credentials.oauth_scope = (
                GovernmentConstants.TO_CHANNEL_FROM_BOT_OAUTH_SCOPE
            )
Ejemplo n.º 2
0
    def __init__(self, settings: BotFrameworkAdapterSettings):
        """
        Initializes a new instance of the :class:`BotFrameworkAdapter` class.

        :param settings: The settings to initialize the adapter
        :type settings: :class:`BotFrameworkAdapterSettings`
        """
        super(BotFrameworkAdapter, self).__init__()
        self.settings = settings or BotFrameworkAdapterSettings("", "")

        # If settings.certificate_thumbprint & settings.certificate_private_key are provided,
        # use CertificateAppCredentials.
        if self.settings.certificate_thumbprint and settings.certificate_private_key:
            self._credentials = CertificateAppCredentials(
                self.settings.app_id,
                self.settings.certificate_thumbprint,
                self.settings.certificate_private_key,
                self.settings.channel_auth_tenant,
            )
            self._credential_provider = SimpleCredentialProvider(
                self.settings.app_id, "")
        else:
            self._credentials = MicrosoftAppCredentials(
                self.settings.app_id,
                self.settings.app_password,
                self.settings.channel_auth_tenant,
            )
            self._credential_provider = SimpleCredentialProvider(
                self.settings.app_id, self.settings.app_password)

        self._is_emulating_oauth_cards = False

        # If no channel_service or open_id_metadata values were passed in the settings, check the
        # process' Environment Variables for values.
        # These values may be set when a bot is provisioned on Azure and if so are required for
        # the bot to properly work in Public Azure or a National Cloud.
        self.settings.channel_service = self.settings.channel_service or os.environ.get(
            AuthenticationConstants.CHANNEL_SERVICE)
        self.settings.open_id_metadata = (
            self.settings.open_id_metadata or os.environ.get(
                AuthenticationConstants.BOT_OPEN_ID_METADATA_KEY))

        if self.settings.open_id_metadata:
            ChannelValidation.open_id_metadata_endpoint = self.settings.open_id_metadata
            GovernmentChannelValidation.OPEN_ID_METADATA_ENDPOINT = (
                self.settings.open_id_metadata)

        if JwtTokenValidation.is_government(self.settings.channel_service):
            self._credentials.oauth_endpoint = (
                GovernmentConstants.TO_CHANNEL_FROM_BOT_LOGIN_URL)
            self._credentials.oauth_scope = (
                GovernmentConstants.TO_CHANNEL_FROM_BOT_OAUTH_SCOPE)

        self._connector_client_cache: Dict[str, ConnectorClient] = {}
    def oauth_api_url(self, context_or_service_url: Union[TurnContext,
                                                          str]) -> str:
        url = None
        if self._is_emulating_oauth_cards:
            url = (context_or_service_url.activity.service_url if isinstance(
                context_or_service_url, object) else context_or_service_url)
        else:
            if self.settings.oauth_endpoint:
                url = self.settings.oauth_endpoint
            else:
                url = (US_GOV_OAUTH_ENDPOINT
                       if JwtTokenValidation.is_government(
                           self.settings.channel_service) else OAUTH_ENDPOINT)

        return url