代码之家  ›  专栏  ›  技术社区  ›  leopal Guilherme Oliveira

委托身份验证的可接受使用策略问题

  •  0
  • leopal Guilherme Oliveira  · 技术社区  · 7 年前

    我们已经根据官方文件配置了标题中所述的两个功能( aup & delegate authentication .

    我们使用delagate身份验证与外部saml idp提供商集成。所以我们有两种认证方式。idp身份验证和本地身份验证(cas内部数据库身份验证程序)。

    在外部和内部身份验证之后,我们需要在满足条件a时显示acceptance usage policy视图。

    上述功能与本地登录的功能相同, 然而 ,当在外部idp中执行身份验证时,可接受的使用策略页面 不是 即使满足条件A且用户最终登录最初请求的服务,也会显示。

    问题 :为什么会发生这种情况?是否有任何可能的解决办法?

    Cas服务器版本:5.3.7

    0 回复  |  直到 7 年前
        1
  •  1
  •   Misagh Moayyed    7 年前

    如果你检查 this block ,您会发现策略使用的验证链接到 STATE_ID_CREATE_TICKET_GRANTING_TICKET :

    final ActionState ticketCreateState = getState(flow, CasWebflowConstants.STATE_ID_CREATE_TICKET_GRANTING_TICKET, ActionState.class);
    ticketCreateState.getEntryActionList().add(createEvaluateAction("acceptableUsagePolicyVerifyAction"));
    createTransitionForState(ticketCreateState, AcceptableUsagePolicyVerifyAction.EVENT_ID_MUST_ACCEPT, VIEW_ID_ACCEPTABLE_USAGE_POLICY_VIEW);
    

    这是AUP流的一个限制,因此verify操作的结果会被忽略,并且在委托用例中,触发最终视图时不会考虑它,即使它表明了这一点。

    6.0。x branch稍微更改了此逻辑以改进此行为:

    val ticketCreateState = getState(flow, CasWebflowConstants.STATE_ID_CREATE_TICKET_GRANTING_TICKET, ActionState.class);
    createEvaluateActionForExistingActionState(flow, ticketCreateState.getId(), AUP_VERIFY_ACTION);
    createTransitionForState(ticketCreateState, CasWebflowConstants.TRANSITION_ID_AUP_MUST_ACCEPT, VIEW_ID_ACCEPTABLE_USAGE_POLICY_VIEW);
    

    欢迎您在5.3中尝试同样的方法。x部署并报告。务必彻底测试这两种情况。如果事情按预期进行,请发回,然后您可以向项目发布请求以更改/修复此行为。

    PS注意,各种webflow操作和状态的纠缠是非常棘手的,因为有许多模块希望将自己插入正确的webflow状态以适应某些行为。这些模块通常互不了解,并试图在某种程度上不可知地增加流量。在这种情况下,把这些东西连在一起可能会很棘手。