在企业应用程序(EAI)中存储用户凭据的位置?

jai*_*jai 9 java notifications store credentials

背景/上下文

我们正在开发一个事件通知服务.高级别的应用程序如下所示: 高水平流动

我们的开发范围涉及小部件和ENS.

" ENS "充当用户感兴趣的某些类型事件的集中点.任何想知道这些类型的事件何时发生的用户都会注册ENS,它按顺序识别事件并将通知与订阅相匹配.

想要subcibe的用户应该是集成应用程序的有效用户(db,sap system等)

事件顺序:

在此输入图像描述

现在我的问题是:

存储Users db,sap等凭据的最佳实践是什么.

编辑 用户应该多久进行一次身份验证?应该是每次传递消息吗?(正如@duffymo提到的,如果我使用这个策略,它会影响源系统)

附加信息: ENS是网络服务.

ENS轮询SAP(和其他应用程序),这就是问题变得更加复杂的地方.在SAP中,存在数据级授权.因此,并非所有用户都可以查看所有事件/数据.

如果SAP已推送数据以及有权查看的用户信息,则根本没有问题.

案例1:调度程序由ENS启动

  1. 用户订阅订阅.在订阅时,将在SAP系统中检查用户的授权.如果没问题,那么他将被允许进行订阅.
  2. 调度程序在预定时间运行.
  3. 调度程序识别订阅的用户.
  4. 如果发生事件,则调度程序使用存储的用户凭证(在ENS中执行)进行POLL.
  5. 如果有更改,请通知用户.

Disadvs在这里:

  • 用户凭据存储在外部某处 - 安全团队可能不接受它
  • 如果多个用户订阅了同一条信息,则Reduntant命中

案例2:调度程序由WIDGET引导.用户信用卡仅存储在用户本地计算机中.Diadv:

  • 如果订阅是每天,并且用户系统/小部件未启动.用户可能会错过周末发生的通知.
  • 如果多个用户订阅了同一条信息,则Reduntant会命中服务器.

duf*_*ymo 3

通常是应用程序向数据库、SAP 等提供凭据。单个用户的凭据将存储在 LDAP 或数据库中;身份验证和授权将作为应用程序、EAI 服务器或 SiteMinder 等设备的横切关注点进行处理。

传入的请求将被拦截并检查授权令牌。如果未出现令牌,请检查身份验证和授权。如果允许,创建授权令牌并缓存它。

这是 Web 应用程序的常见场景。对于像您这样的事件通知情况,情况会更复杂。当用户订阅时,您必须检查授权。如果用户未经授权,您应该立即通知他们,因为您不希望每次发布时都检查凭据。用户、订阅事件和授权凭证之间必须存在关联。

我只看到一个问题。

您可以向未经授权的用户广播事件,如果他们订阅了某个事件,发现他们已获得授权,收到第一个广播,然后由于某种原因变得未经授权。这表明您每次向订阅者广播时都必须检查凭据。这可能会变得繁重并减慢您的应用程序的速度。

查看 SAML 等标准,看看它是否可以帮助您。

缓存问题取决于事件之间的时间和授权更改之间的时间之间的比较。如果事件之间的时间间隔与授权更改相比较长,则您必须每次都进行检查,因为您无法知道自上次事件以来授权是否已被撤销。