我目前正在开发一个 SOA 解决方案,其中架构中的每个服务都是安全的、可验证的超媒体资源(就像在真正的超媒体中一样,而不是带有漂亮 URL 的 RPC)。
面向客户的、公司内部的和客户构建的应用程序将建立在此架构之上(这里没有什么不寻常的)。我不能假设应用程序之间存在共同的身份验证模式,因为用户识别和凭证管理的要求可能会有很大差异。
因此,架构中的服务必须采用单独的身份验证方案。理想情况下,这将在服务(例如 HMAC)之间完全一致,以允许尽可能多的客户端/服务器模块重用。
我的问题是:是否有一种通用模式可以跨解耦服务提供一致的身份验证和凭据管理?如果是这样,它是什么?
我提出了一些想法,但如果有经验更丰富的工程师提供意见,我将不胜感激:
1)每个服务都公开一个离散但机械相同的身份验证接口,并负责自己的凭证管理。
2)同1),但具有共享凭证管理。架构中的每个服务仍然公开一个离散的身份验证接口,如1)所示,但底层数据介质是共享的。
3)有一个单一的共享认证服务,负责对自己和所有其他服务进行认证和凭证管理。
我发现想法2)是最吸引人的,但它需要一些改进。除非我在这里完全走错了路。
请尽可能多地批评/建议。当然要记住,这是关于设计而不是实现;目前我对框架/中间件/协议 XYZ 不感兴趣。
为散文道歉,感谢阅读。