2

I'm currently developing an SOA solution, where each service in the architecture is a secure, authenticating hypermedia resource (as in really hypermedia, not RPC with pretty URLs).

Customer-facing, company-internal and customer-built applications will be built on top of this architecture (nothing unusual here). I cannot assume that there exists a common authentication pattern between applications because requirements for user identification and credential management can differ significantly.

It follows that services in the architecture must employ a separate authentication scheme. Ideally this would be completely consistent between services (for example HMAC), to allow as much client/server module re-use as possible.

My question to you is this: is there a common pattern for providing consistent authentication and credential management across decoupled services? If so, what is it?

I came up with a few ideas, but input from more experienced engineers would be appreciated:

1) Each service exposes a discrete but mechanically identical authentication interface, and is responsible for its own credential management.

2) As 1) but with shared credential management. A discrete authentication interface is still exposed for each service in the architecture, as in 1), but the underlying data medium is shared.

3) There is a single shared authentication service, which is responsible for authentication and credential management for itself and all other services.

I find idea 2) to be the most appealing, but it needs some refinement. Unless I am totally on the wrong track here.

Please criticise/suggest as much as you see fit. Bearing in mind of course that this is about design and not implementation; I'm not interested in framework/middleware/protocol XYZ at this point.

Apologies for the prose, and thanks for reading.

1 Answers1

1

LDAP is --> that away to centralize credentials.

Amazons AWS authentication scheme is up and over yonder. Each app can implement that and refer to the LDAP for credentials.

OAuth is up and over here if you want to centralize the entire kit.

Just to clarify, this should NOT be a thought experiment. It's been done, no reason to redo it. Look around for standards and implement them. The things that talk to LDAP are legion. AWS is an ad hoc standard, but it does the job and answers most everyones questions, and has been vetted, found to be flawed and fixed, and is in use in the wild by many as we speak. OAuth helps solve the central authentication problems if you want to go there.

Community
  • 1
  • 1
Will Hartung
  • 115,893
  • 19
  • 128
  • 203