I'm currently working on a protocol which passes automated instructions between separate organisations. I'm looking for a way to delegate authentication of devices to which ever organisation a device belongs to. This doesn't affect authorisation models, only authentication.
So to put this in terms of DNS domains:
- organisation
foomy.tld
should be able to authenticate (eg: sign the certificate for?)new_deive.foomy.tld
. - organisation
acme.tld
could choose to trustfoomy.tld
:- It should then be able to trust
new_device.foomy.tld
is what it says it is on the authority offoomy.tld
- BUT organisation
acme.tld
should NEVER trustfoomy.tld
to authenticate any device outside the domain offoomy.tld
.
- It should then be able to trust
Considering using x509 and SSL
In the case of x509 CA certificates, the CA role is usually performed by a third party CA. But that isn't appropriate for this purpose:
- The creation / destruction of device IDs (services) is too rapid to consider a traditional CA (too expensive, too slow).
- This mechanism needs to authenticate clients and servers. Devices / services do not always have public IP addresses so CA solutions such as LetsEncrypt aren't an option.
- Creating a dedicated CA for this single purpose is not cost effective and likely to damage adoption.
So this leads to the idea of an organisation acting as their own CA for this purpose. But as it turns out, x509 really doesn't support this well, because once you accept a CA as being trustworthy you cannot limit the scope of that trust enough. IE: You cannot trust it to only sign certificates for it's own domain.
Considering re-purposing single sign on mechanisms
The single sign-on mechanisms I've looked at appear to be built around the concept of authenticating users. Background automated services don't appear to be well supported.
Maybe I missed something here.
Question - Keeping it as narrow as possible.
Is there another approach allowing this type of cross organisation authentication which I can use for my problem ?