2011-02-09 48 views
9

背景/上下文在哪里将用户凭证存储在企业应用程序(EAI)中?

我们正在开发事件通知服务。高级应用程序如下所示: high level flow

我们的开发范围涉及widget和ENS。

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

谁愿意所有本应该是集成应用(数据库,SAP系统等)

的事件序列的有效用户的用户:

enter image description here

现在我的问题是:

什么是存储用户数据库,SAP等证书最好的事情。

编辑 应该多久的用户进行身份验证?应该每次发送邮件?(正如@duffymo提到的,如果我使用这种策略,它会影响源系统)

附加信息: ENS是web服务。

ENS轮询SAP(和其他应用程序),这就是问题变得越来越复杂的地方。 在SAP中有数据级授权。所以不是所有的用户都可以看到所有的事件/数据。

如果SAP已将数据与授权查看的用户信息一起压入,则根本没有问题。

案例1:计划是由ENS

  1. 用户发起订阅订阅。在订阅时,用户在SAP系统中检查他的授权。如果确定,那么他将被允许进行订阅。
  2. 调度程序在计划时间运行。
  3. 调度程序标识订阅的用户。
  4. 如果事件发生,调度程序会将用户存储的凭据(在ENS中存储)用于POLL。
  5. 如果有更改,请通知用户。

Disadvs这里:

  • 用户凭据存储在某个地方 外部 - 安全团队可能不会 接受
  • 如果多个用户 订阅了同一块 信息Reduntant命中

情况2:调度程序由WIDGET启动。用户信用将仅存储在用户本地机器中。 Diadv:

  • 如果订阅每日,如果 用户系统/部件不起来。用户可能会错过在周末发生的通知 。
  • 如果还有更多 的订阅者向 订阅了同一条信息,则还原剂会向服务器发送。
+0

你用什么来实现ENS服务?这是基于JMS服务器还是基于WEB应用程序?你正在开发自己的通知和订阅协议?另外,如何将事件推出想要通知他人的应用程序,ENS是否针对事件轮询SAP和其他应用程序,还是SAP将事件推出? – ams

回答

3

通常它是为数据库,SAP等提供凭据的应用程序。单个用户将具有存储在LDAP或数据库中的凭证;身份验证和授权将作为应用程序,EAI服务器或SiteMinder等应用程序的交叉问题处理。

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

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

我只看到一个问题。

您可以向未经授权的用户广播活动,如果他们订阅活动,查明他们是授权的,接收第一个广播,然后由于某种原因而成为未经授权的用户。这表明,您每次向订阅者广播时都必须检查凭证。这可能会变得繁重并且会降低您的应用速度。

看看像SAML这样的标准是否可以帮助你。

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

+0

你可以解决这个问题,“缓存”用户凭证,所以只有当你的缓存过期时才能检查SAP,DB等。如果凭据更改不正常,这可以提高性能。 –

+0

缓存如何查明自上次事件后授权是否已被撤销?我认为你必须每次都检查一下,所以缓存你不行,除非你愿意保证它不能在事件之间改变。它仅适用于证书,因为我们假设会话时间短于证书更改之间的时间。事件广播不一定如此。 – duffymo

+0

这取决于您发布活动的频率。您可以(取决于组织策略)定义授权更改仅在前一天或下一小时或其他时间生效,并基于此定义缓存过期时间。 –

0

在这个问题中描述的设置中,您将不得不建立清除消息队列的方法。例如,当用户遇到问题并停止接收消息时会发生什么情况,或者如果偶然某些格式不正确的消息出现在订阅主题上,并且这些消息导致客户端收到消息以进行崩溃,会发生什么情况。这就是为什么你的系统必须有一些管理功能来删除消息。您可以重复使用此管理功能来触发用户已从外部系统删除的消息到ENS,此用户已删除的消息将导致用户通知队列被清空并且其订阅无效。

您可以用来处理删除用户的外部系统上的情况的另一件事是从外部系统的通知消息已到期时间。例如,SAP通知消息在创建时间后可能有效2小时。如果用户在2小时内没有收到邮件,则邮件将被删除。如果将消息过期与来自SAP的通知消息结合起来,用户不再有效,那么您可以知道有一段时间限制,在此期间用户将失效。

我想如果你提供更多关于你用来实现ENS的技术的上下文,那么我们可能会给你更具体的答案。

1

我所见过的这种模式最常见的方式是授权发生在订阅而不是后端。主题层次结构反映后端应用程序的安全模型。如果后端具有查询Produce,Deli和Grocery的功能,则存在具有相同分类的主题节点。在Grocery的后端系统中获得授权的用户也有权访问Grocery主题。后端系统中的授权可以定期导出(通常是夜间)并转换为pub/sub broker上的授权设置。在一个实施中,我在后端系统上的工作将在一个安全的管理主题上向发布/订阅代理发布授权更改,以便订户授权将保持近实时。

将凭据传递回源系统的概念听起来很安全,但在深入检查时会遇到一些问题。首先,你打算怎样扩展这个规模?我从来没有见过成功的事件通知系统没有得到大量重用。每个后端系统对身份验证都有不同的要求,通常是不同的凭证,不同的有效性和缓存要求等。构建系统以将证书流式传输回几个后端应用程序是一回事。做10或20是一场噩梦。

假设您解决了上述问题,现在您已在一个位置为后端企业系统的一半缓存了用户凭据。如果这一个中央系统受到威胁,那么它所涉及的所有后端系统都会受到影响。该中央系统成为企业中最关键的安全焦点。解决这个问题所需的严格安全性成本很高。

是的,让发布/订阅代理的主题树和授权反映后端应用程序的安全模型是一种痛苦。但最后,与设计中央代理服务相比,设计中央代理服务要容易得多(而且成本更低),因为它足够安全地存储所有凭据,并且还能够在多个后端系统上验证它们,而不会使代理或发布的源系统陷入困境到它。

0

LDAP将成为存储更好的选择,它的安全,快速,便携也

* 编辑:便携式在获得您的企业应用程序的意义。

相关问题