ADFS 3.0 - 扩展功能

时间:2016-02-15 20:58:32

标签: javascript adfs adfs3.0

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

  1. 我需要扩展适配器,以便部分html由外部脚本呈现,即我需要添加额外的脚本,以便在呈现adfs适配器html时加载。 根据我的发现,可以修改主题以在onload.js中包含其他javascript,但我不想走这条路,因为脚本确实需要从外部加载。
  2. 我能想到的唯一方法,也就是一种有效的方法,就是在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文件夹并从那里读取是否安全?

    3. 非常感谢

1 个答案:

答案 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-使用以下命令注册适配器时可以传递配置文件:  Register-AdfsAuthenticationProvider -TypeName $ typeName -Name -Verbose -ConfigurationFilePath。

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

void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData)

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