【问题标题】:ADFS 3.0 - Extending functionalityADFS 3.0 - 扩展功能
【发布时间】:2016-02-15 20:58:31
【问题描述】:

我目前正在实施一个包含多因素身份验证的 ADFS 3.0 解决方案。我已按照 TechNet (https://msdn.microsoft.com/en-GB/Library/dn783423.aspx?f=255&MSPPError=-2147217396) 中的步骤设置示例适配器,效果很好。 我现在想扩展它并面临一些问题。我已经在 web 和 stackoverflow 上搜索了类似的东西,但找不到任何东西,所以我将它们全部发布在这里。不确定我是否需要将其拆分为不同的问题:

  1. 我需要扩展适配器,以便部分 html 由外部脚本呈现,即我需要添加一个额外的脚本,以便在呈现 adfs 适配器 html 时加载。 据我所知,可以修改主题以在 onload.js 中包含额外的 javascript,但我不想走这条路,因为脚本确实需要从外部加载。

我能想到的唯一一种可行的方法是在 html 中注入 javascript,以动态加载脚本,如下所示:

var script =document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", <my_script_loaded_over_http>)

fileref.onload =
        function() {
         //call script method
        };

但是由于外部脚本的某些逻辑依赖于窗口的“onload”事件,所以它无法正常工作,因为它加载得太晚了..

这可能吗?

  1. 适配器是否可以注入新的响应标头? (我假设不是)

  2. 是否有一种标准方法可以向适配器 dll 提供配置文件,以便可以在运行时更改某些值而无需部署新的 dll?如果没有,将上述配置文件写入adfs文件夹并从那里读取是否安全?

非常感谢

【问题讨论】:

    标签: javascript adfs adfs3.0


    【解决方案1】:

    我自己解决了这个问题:

    1- 接口 IAdapterPresentationForm 提供了一种方法来返回我想要包含的任何脚本或 css:string GetFormPreRenderHtml(int lcid) 例如:

     public string GetFormPreRenderHtml(int lcid){
            StringBuilder sb = new StringBuilder();
            sb.Append("<script src='http://myjs.js' type='text/javascript'></script>");
            sb.Append("<link rel='stylesheet' type='text/css' href='http://mycss.css' />");
            return sb.ToString();
     }
    

    2- 一点也不

    3- 注册适配器时可以使用以下方式传递配置文件: 注册-AdfsAuthenticationProvider -TypeName $typeName -Name -Verbose -ConfigurationFilePath 。

    管道将为您打开一个流,并将其传入:

    void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData)
    

    参考:http://blogs.recneps.net/category/ADFS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2011-10-10
      • 2020-02-14
      • 2018-02-12
      相关资源
      最近更新 更多