Conditional Requests on Connections - eclipse-ditto

We have conditional requests on things- HTTP API or Ditto Protocol headers.
Is there a way to restrict payload to get published into a topic in the ditto connections unless a conditional request is matched?
For example, in my twin I have a feature "connectionState" with value "Disconnected". I want to restrict publishing ditto protocol messages to a topic to update other features when the connectionState is Disconnected. Once the connectionState is "Connected", I want all the ditto protocol messages that have been published to update all the other features.
Is there such conditional request for ditto connections?

Related

Can I attach/configure client certificate with azure event grid push to https endpoint?

The azure event grid allows an https endpoint (my web hook event handler) to be registered with a subscriber for a topic. So when an event is received by the topic that matches the subscription filter criteria, the event is pushed by the event grid to my https endpoint.
I have a use case where the my https endpoint requires a client certificate to be supplied with this http push mechanism by event grid.
Does event grid allow a way to attach/configure a client certificate, related to the my web hook https endpoint? If so, how do I configure this?
If the client certificate functionality (for push) is currently not available in event grid, what are the other easier security mechanisms that I can employ to keep out unwanted and malicious events push by non-event grid publishers? (Other than firewall rules, white listing of IPs etc.)
Thanks.
For your scenario can be used an EventGridTrigger Function as a subscriber-integrator to your client endpoint. This function will handle forwarding an event message based on your needs.
Update:
Other option using a declarative integration for delivery an event grid to the https endpoint with a client certificate authorization is subscribing by Logic Apps and then forwarding to the custom endpoint. The following screen snippet shows this case:
Note, that the Azure Event Grid supports customizing a Webhook subscriber endpoint only at the url address (included a query string). That's documented in the https://learn.microsoft.com/en-us/azure/event-grid/security-authentication as it has been commented by #KenWMSFT.
Both of Roman's answers should work quite well. Depending on your particular constraints and throughput, a third option would be to use Hybrid Connections as an intermediary.
This would involve adding a bit of code at your event handling endpoint to open a WebSocket connection to Hybrid Connections, and then routing your events form Event Grid to Hybrid Connections.
This should allow you to fully circumvent your client certificate issue and would allow for high throughput. The downside is adding some client-side code to open the WebSocket. The best solution for you is highly dependant on your requirements.
Here is a sample on using Hybrid Connections to route events if you choose to go that route.

Can I send encrypted binary traffic to a WCF relay? If not, why not?

I am trying to use an Azure WCF Relay to send an encrypted AS2 message to a BizTalk WCF endpoint hosted on-premises. I've confirmed that the relay is connected on the receiver side and I've been able to send it junk text-based messages and confirmed that these arrive on the receiver.
My working AS2 sender is an Azure Logic App with the AS2 encoder and an HTTP send action. This works with another real AS2 receiver provided by a third party. The message is encrypted and signed and transmitted with a content type of application/pkcs7-mime; smime-type=enveloped-data; name=\"smime.p7m\" and a content transfer encoding of binary.
This yields a SOAP Fault as a response, with the fault code namespace of http://schemas.microsoft.com/netservices/2009/05/servicebus/relay. This pretty well confirms to me that it's the relay returning this error. Nothing at all shows up on the on-premises side. I've experimented with BasicHttpRelayBinding - which should expect SOAP - and WebHttpRelayBinding, which from my understanding, should accept anything. Neither works.
Must the message sent to a WCF Relay be a SOAP message? If so, how would I embed this binary content in it so that it can be unpacked and processed as "normal" AS2 on the other side? Otherwise, will this ever work, or am I onto a loser here?
If you want to send non-SOAP traffic over WcfRelay then use WebHttpRelayBinding.
Example:
https://github.com/Azure/azure-relay/tree/master/samples/wcf-relay/RelayHttp

DocuSign Connect - Creating a Listener

DocuSign Connect Guide states that when creating a listener, for the method name DocuSignConnectUpdate, you need one parameter type DocuSignEnvelopeInformation.
Only problem is on their DocuSign.eSign namespace, there is no DocuSignEnvelopeInformation class to be found.
Is the guide out of date or am I missing something?
The part of the Connect Guide you're quoting only applies if you configure your webhook (Connect) subscription to use SOAP message transmission format. (Which I advise against.)
If you choose to use SOAP message transmission format, your listener needs to be a SOAP server that will process incoming SOAP requests to method DocuSignConnectUpdate with parameter DocuSignEnvelopeInformation
In this case, your app is receiving the SOAP requests, not requesting them, as is more usual when using SOAP. Because your listener is receiving the SOAP requests to DocuSignConnectUpdate, it does not appear in the DocuSign Signature SOAP WSDL file that you reference. That WSDL file and name space describe the methods that your app requests.
Rather than setting up a SOAP listener, it is usually easier to set up a plain HTTPS listener (server) to receive and process the incoming webhook messages.

Filter messages through a Rest response in Spring Integration

I am new to Spring Integration
Context
We have a CTI system (CSTA Server, Call Center Web Application)
I have to check if an agent is logged in our contact center (by Restful API) and forward every CSTA server(webSocket) Event from logged in Agents.
I am able to get all events from the CSTA server asynchronously
(tcp-connection-factory / tcp-inbound-channel-adapter)
and if necessary transform them (ex. JSON).
The event has unique agent identifiers which i could use to check through our API if an agent is logged in and than dispatch the message to an Endpoint.
I dont want to dispatch the reply from the Rest service rather i would like to dispatch every csta event that as a logged in agent.
I able to consume an http outbound-gateway from a Rest Service. How can i enrich a Message or filter depending on the reply i will get from an http outbound-gateway?
In short: I want to filter (depending on the reply of a rest service) every message from a websocket and dispatch it to another endpoint.
Are there any git examples i could look at?
Thanks!
Looks like you need a Router pattern for your purpose:
<int:router input-channel="input" ref="myRouter" method="route"/>
And here you can find a Cafe sample.

Send IoT Message to Azure Event Hub by URL

I am now using a Beacon Reveiver to get the iBeacon Information.
Here is the problem:
the receiver platform server only allow me to type a url.
How should I do to send the information to azure eventhub??
I found this API:
https://NAMESPACE.servicebus.windows.net/EVENTHUB-NAME/publishers/PUBLISHER-NAME/messages
I tried it ,but it seems doesn't work.
Do i miss anything?? or Can anyone teach me how to add the authentication in url? What should I do now?
Thanks
You must set an authentication HTTP header in order to send events to Event Hubs. You can't include authentication information in the request URL.
Even though you can't send messages directly to Event Hubs, you can develop a custom Web API that uses your own URL-based authentication mechanism and forwards the requests to Event Hubs (or another service). That defeats the purpose of using Event Hubs to some degree but gives you more flexibility.

Resources