2016-02-15 109 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