|
Posted
about 6 years
ago
By adding another connectivity type - HTTP - to Ditto’s
connectivity, it is now (to be released in the next Ditto milestone 1.0.0-M2) possible to to
publish twin events, messages, live commands and events to existing HTTP servers/endpoints.
That
... [More]
is especially useful for invoking existing APIs (which are most of the time HTTP based) whenever e.g.
a digital twin was modified.
One example on how to benefit from this new feature is to invoke a custom
IFTTT (if-this-than-that) webhook via a HTTP POST request
which then may trigger other IFTTT follow-up-actions (e.g. send a chat message to a Slack
room).
For IFTTT “webhooks” the address would be POST https://maker.ifttt.com/trigger//with/key/
and the expected JSON body:
{
"value1": "...",
"value2": "...",
"value3": "..."
}
In combination with payload mapping, the value1 to value3 fields requested by the IFTTT
API can be extracted from the Ditto Protocol and could contain the changed value.
In combination with filters for targets you can even specify to
only publish e.g. twin events, where the temperature of a twin exceeded a certain threshold:
{
"address": "POST:/trigger//with/key/",
"topics": [
"_/_/things/twin/events?filter=gt(features/temperature/value,25)"
],
...
}
Get creative on which HTTP APIs to trigger based on twin events. E.g. invoke a “function-as-a-service” API or invoke the
Twitter API and let your digital twin tweet whenever it detects, that it is getting too warm in your office.
–
The Eclipse Ditto team
[Less]
|
|
Posted
about 6 years
ago
By adding another connectivity type - HTTP - to Ditto’s
connectivity, it is now (to be released in the next Ditto milestone 1.0.0-M2) possible to to
publish twin events, messages, live commands and events to existing HTTP servers/endpoints.
That
... [More]
is especially useful for invoking existing APIs (which are most of the time HTTP based) whenever e.g.
a digital twin was modified.
One example on how to benefit from this new feature is to invoke a custom
IFTTT (if-this-than-that) webhook via a HTTP POST request
which then may trigger other IFTTT follow-up-actions (e.g. send a chat message to a Slack
room).
For IFTTT “webhooks” the address would be POST https://maker.ifttt.com/trigger//with/key/
and the expected JSON body:
{
"value1": "...",
"value2": "...",
"value3": "..."
}
In combination with payload mapping, the value1 to value3 fields requested by the IFTTT
API can be extracted from the Ditto Protocol and could contain the changed value.
In combination with filters for targets you can even specify to
only publish e.g. twin events, where the temperature of a twin exceeded a certain threshold:
{
"address": "POST:/trigger//with/key/",
"topics": [
"_/_/things/twin/events?filter=gt(features/temperature/properties/value,25)"
],
...
}
Get creative on which HTTP APIs to trigger based on twin events. E.g. invoke a “function-as-a-service” API or invoke the
Twitter API and let your digital twin tweet whenever it detects, that it is getting too warm in your office.
–
The Eclipse Ditto team
[Less]
|
|
Posted
about 6 years
ago
By adding another connectivity type - HTTP - to Ditto’s
connectivity, it is now (to be released in the next Ditto milestone 1.0.0-M2) possible to
publish twin events, messages, live commands and events to existing HTTP servers/endpoints.
That is
... [More]
especially useful for invoking existing APIs (which are most of the time HTTP based) whenever e.g.
a digital twin was modified.
One example on how to benefit from this new feature is to invoke a custom
IFTTT (if-this-than-that) webhook via a HTTP POST request
which then may trigger other IFTTT follow-up-actions (e.g. send a chat message to a Slack
room).
For IFTTT “webhooks” the address would be POST https://maker.ifttt.com/trigger//with/key/
and the expected JSON body:
{
"value1": "...",
"value2": "...",
"value3": "..."
}
In combination with payload mapping, the value1 to value3 fields requested by the IFTTT
API can be extracted from the Ditto Protocol and could contain the changed value.
In combination with filters for targets you can even specify to
only publish e.g. twin events, where the temperature of a twin exceeded a certain threshold:
{
"address": "POST:/trigger//with/key/",
"topics": [
"_/_/things/twin/events?filter=gt(features/temperature/properties/value,25)"
],
...
}
Get creative on which HTTP APIs to trigger based on twin events. E.g. invoke a “function-as-a-service” API or invoke the
Twitter API and let your digital twin tweet whenever it detects, that it is getting too warm in your office.
–
The Eclipse Ditto team
[Less]
|
|
Posted
about 6 years
ago
By adding another connectivity type - HTTP - to Ditto’s
connectivity, it is now (to be released in the next Ditto milestone 1.0.0-M2) possible to to
publish twin events, messages, live commands and events to existing HTTP servers/endpoints.
That
... [More]
is especially useful for invoking existing APIs (which are most of the time HTTP based) whenever e.g.
a digital twin was modified.
One example on how to benefit from this new feature is to invoke a custom
IFTTT (if-this-than-that) webhook via a HTTP POST request
which then may trigger other IFTTT follow-up-actions (e.g. send a chat message to a Slack
room).
For IFTTT “webhooks” the address would be POST https://maker.ifttt.com/trigger//with/key/
and the expected JSON body:
{
"value1": "...",
"value2": "...",
"value3": "..."
}
In combination with payload mapping, the value1 to value3 fields requested by the IFTTT
API can be extracted from the Ditto Protocol and could contain the changed value.
In combination with filters for targets you can even specify to
only publish e.g. twin events, where the temperature of a twin exceeded a certain threshold:
{
"address": "POST:/trigger//with/key/",
"topics": [
"_/_/things/twin/events?filter=gt(features/temperature/properties/value,25)"
],
...
}
Get creative on which HTTP APIs to trigger based on twin events. E.g. invoke a “function-as-a-service” API or invoke the
Twitter API and let your digital twin tweet whenever it detects, that it is getting too warm in your office.
–
The Eclipse Ditto team
[Less]
|
|
Posted
about 6 years
ago
Today the Ditto team is happy to announce the first milestone of the upcoming release
1.0.0.
Have a look at the Milestone 1.0.0-M1a release notes for what changed in detail.
The main changes and new features since the last release 0.9.0 are
... [More]
initial contribution of Java client SDK
configurable OpenID Connect authorization servers
fine grained access for connections
scalable event publishing
typed entity IDs
Artifacts
The new Java artifacts have been published at the Eclipse Maven repository
as well as Maven central.
The Docker images have been pushed to Docker Hub:
eclipse/ditto-policies
eclipse/ditto-things
eclipse/ditto-things-search
eclipse/ditto-gateway
eclipse/ditto-connectivity
eclipse/ditto-concierge
–
The Eclipse Ditto team
[Less]
|
|
Posted
about 6 years
ago
Today the Ditto team is happy to announce the first milestone of the upcoming release
1.0.0.
Have a look at the Milestone 1.0.0-M1a release notes for what changed in detail.
The main changes and new features since the last release 0.9.0 are
... [More]
initial contribution of Java client SDK
configurable OpenID Connect authorization servers
fine grained access for connections
scalable event publishing
typed entity IDs
Artifacts
The new Java artifacts have been published at the Eclipse Maven repository
as well as Maven central.
The Docker images have been pushed to Docker Hub:
eclipse/ditto-policies
eclipse/ditto-things
eclipse/ditto-things-search
eclipse/ditto-gateway
eclipse/ditto-connectivity
eclipse/ditto-concierge
–
The Eclipse Ditto team
[Less]
|
|
Posted
over 6 years
ago
Eclipse Ditto now supports all OAuth 2.0 providers which implement OpenID Connect out-of-the-box.
You can find a list of certified providers at OpenID Connect - Certified OpenID Provider Servers and Services.
With this post, we want to give an
... [More]
example of this new feature using the open source provider ORY Hydra.
Follow their installation guide for a
docker based setup on your development machine.
Configuration
Download the self-signed certificate form the ORY Hydra server: https://localhost:9000/.well-known/openid-configuration
Use the downloaded certificate for the akka-http ssl configuration.
ssl-config {
trustManager = {
stores = [
{ type = "PEM", path = "/path/to/cert/globalsign.crt" }
]
}
}
The authentication provider must be added to the ditto-gateway configuration.
ditto.gateway.authentication {
oauth {
openid-connect-issuers = {
ory = "https://localhost:9000/"
}
}
}
The configured subject-issuer will be used to prefix the value of the “sub” claim, e.g.
{
"subjects": {
"ory:[email protected]": {
"type": "generated"
}
}
}
Authenticate Ditto API
Create an OAuth client with hydra to be able to create ID Tokens.
docker run --rm -it \
-e HYDRA_ADMIN_URL=https://ory-hydra-example--hydra:4445 \
--network hydraguide \
oryd/hydra:v1.0.0 \
clients create --skip-tls-verify \
--id eclipse-ditto \
--secret some-secret \
--grant-types authorization_code,refresh_token,client_credentials,implicit \
--response-types token,code,id_token \
--scope openid,offline \
--callbacks http://127.0.0.1:9010/callback
Use the client to generate an ID Token.
docker run --rm -it \
--network hydraguide \
-p 9010:9010 \
oryd/hydra:v1.0.0 \
token user --skip-tls-verify \
--port 9010 \
--auth-url https://localhost:9000/oauth2/auth \
--token-url https://ory-hydra-example--hydra:4444/oauth2/token \
--client-id eclipse-ditto \
--client-secret some-secret \
--scope openid
After that perform the OAuth 2.0 Authorize Code Flow by opening the link, as prompted,
in your browser, and follow the steps shown there.
Use the generated token to authenticate Ditto API.
curl -X POST \
http://localhost:8080/api/2/things \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{}'
–
The Eclipse Ditto team
[Less]
|
|
Posted
over 6 years
ago
Eclipse Ditto now supports all OAuth 2.0 providers which implement OpenID Connect out-of-the-box.
You can find a list of certified providers at OpenID Connect - Certified OpenID Provider Servers and Services.
With this post, we want to give an
... [More]
example of this new feature using the open source provider ORY Hydra.
Follow their installation guide for a
docker based setup on your development machine.
Configuration
Download the self-signed certificate form the ORY Hydra server: https://localhost:9000/.well-known/openid-configuration
Use the downloaded certificate for the akka-http ssl configuration.
ssl-config {
trustManager = {
stores = [
{ type = "PEM", path = "/path/to/cert/globalsign.crt" }
]
}
}
The authentication provider must be added to the ditto-gateway configuration.
ditto.gateway.authentication {
oauth {
openid-connect-issuers = {
ory = "https://localhost:9000/"
}
}
}
The configured subject-issuer will be used to prefix the value of the “sub” claim, e.g.
{
"subjects": {
"ory:[email protected]": {
"type": "generated"
}
}
}
Authenticate Ditto API
Create an OAuth client with hydra to be able to create ID Tokens.
docker run --rm -it \
-e HYDRA_ADMIN_URL=https://ory-hydra-example--hydra:4445 \
--network hydraguide \
oryd/hydra:v1.0.0 \
clients create --skip-tls-verify \
--id eclipse-ditto \
--secret some-secret \
--grant-types authorization_code,refresh_token,client_credentials,implicit \
--response-types token,code,id_token \
--scope openid,offline \
--callbacks http://127.0.0.1:9010/callback
Use the client to generate an ID Token.
docker run --rm -it \
--network hydraguide \
-p 9010:9010 \
oryd/hydra:v1.0.0 \
token user --skip-tls-verify \
--port 9010 \
--auth-url https://localhost:9000/oauth2/auth \
--token-url https://ory-hydra-example--hydra:4444/oauth2/token \
--client-id eclipse-ditto \
--client-secret some-secret \
--scope openid
After that perform the OAuth 2.0 Authorize Code Flow by opening the link, as prompted,
in your browser, and follow the steps shown there.
Use the generated token to authenticate Ditto API.
curl -X POST \
http://localhost:8080/api/2/things \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{}'
–
The Eclipse Ditto team
[Less]
|
|
Posted
over 6 years
ago
Today the Eclipse Ditto team proudly presents its second release
0.9.0.
The topics of this release in a nutshell were:
Memory improvements for huge amounts (multi million) of digital twins which are held in memory
Adding metrics and logging
... [More]
around the connectivity feature in order to enable being able to operate connections to foreign systems/brokers via APIs
Enhancing Ditto’s connectivity feature by additionally being able to connect to Apache Kafka
Performance improvements of Ditto’s search functionality
Stabilization of cluster bootstrapping
Refactoring of how the services configurations are determined
Addition of a Helm template in order to simplify Kubernetes based deployments
Contributions from Microsoft in order to ease operating Eclipse Ditto on Microsoft Azure
Please have a look at the 0.9.0 release notes for a more detailed information on the release.
Artifacts
The new Java artifacts have been published at the Eclipse Maven repository
as well as Maven central.
The Docker images have been pushed to Docker Hub:
eclipse/ditto-policies
eclipse/ditto-things
eclipse/ditto-things-search
eclipse/ditto-gateway
eclipse/ditto-connectivity
eclipse/ditto-concierge
–
The Eclipse Ditto team
[Less]
|
|
Posted
over 6 years
ago
Today the Eclipse Ditto team proudly presents its second release
0.9.0.
The topics of this release in a nutshell were:
Memory improvements for huge amounts (multi million) of digital twins which are held in memory
Adding metrics and logging
... [More]
around the connectivity feature in order to enable being able to operate connections to foreign systems/brokers via APIs
Enhancing Ditto’s connectivity feature by additionally being able to connect to Apache Kafka
Performance improvements of Ditto’s search functionality
Stabilization of cluster bootstrapping
Refactoring of how the services configurations are determined
Addition of a Helm template in order to simplify Kubernetes based deployments
Contributions from Microsoft in order to ease operating Eclipse Ditto on Microsoft Azure
Please have a look at the 0.9.0 release notes for a more detailed information on the release.
Artifacts
The new Java artifacts have been published at the Eclipse Maven repository
as well as Maven central.
The Docker images have been pushed to Docker Hub:
eclipse/ditto-policies
eclipse/ditto-things
eclipse/ditto-things-search
eclipse/ditto-gateway
eclipse/ditto-connectivity
eclipse/ditto-concierge
–
The Eclipse Ditto team
[Less]
|