2016-02-15 41 views
1

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

  1. 我需要延长适配器,使HTML的该部分由外部脚本渲染,即我需要添加额外的脚本中,当加载呈现adfs适配器html。 从我能找到的,可以修改主题,以包含额外的JavaScript onload.js,但我不想走这条路,因为脚本确实需要加载外部。

我能想到的唯一办法,而这类作品的,是注入的JavaScript在dinamically加载脚本的HTML,像这样:

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文件夹并从那里读取是否安全?

非常感谢您

回答

1

我设法算出这个由我自己:

1接口IAdapterPresentationForm提供返回我想要的任何脚本或CSS包括一个方法:字符串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