2010-03-17 56 views
2

有沒有人有任何關於DotNetOpenAuth的文檔以及它處理列表和黑名單的方式?DotNetOpenAuth白名單和黑名單如何工作?

我的配置

<untrustedWebRequest> 
     <blacklistHosts> 
      <add name="*" /> 
     </blacklistHosts> 

     <whitelistHosts> 
     <add name="www.mysite.ca" /> 
     <add name="mysite.ca" /> 
     <add name="devel.mysite.ca" /> 
     <add name="devel.mysite.com" /> 
     <add name="mysite.com" /> 
     <add name="www.mysite.com" /> 

     </whitelistHosts> 


    </untrustedWebRequest> 

我想是有它取消該請求,如果它的任何部位不是在whilelist。我目前正在運行版本2.5.49045,但計劃儘快更新。

使用

<blacklistHostsRegex> 
<add name=".*" /> 
</blacklistHostsRegex> 

有史以來網站擋在了白名單甚至是那些。

回答

4

處理該白名單和黑名單是像這樣的邏輯:

DotNetOpenId/DotNetOpenAuth已經擁有的一些安全和不安全的主機名的一些直覺。所以它會阻止一些並允許其他人在你沒有設置這些列表中的任何東西。這些列表將覆蓋此行爲。

  1. DNOA遇到隱式禁止的主機名。拒絕 - 除非它在白名單上,在這種情況下立即通過。
  2. 否則的主機名稱看起來安全,但如果它在黑名單上,拒絕。

這是上了黑名單的主機會(幾乎)從來沒有得到過(唯一的例外是,如果它看起來不安全反正這是在白名單)。

如果你想黑名單一切,除了一組特定的主機,我認爲最好的辦法是隻使用黑名單,並做了regex "not" match

<untrustedWebRequest> 
    <blacklistHostsRegex> 
     <add name="^(?!www.mysite.ca|www.mysite.com|devel.mysite.com)$" /> 
    </blacklistHostsRegex> 
</untrustedWebRequest> 

這似乎有點令人費解。但它可以在DotNetOpenId/DotNetOpenAuth的當前版本中使用。並且,未來,I'll get this fixed將更加明顯。

+0

嗯我試圖沒有運氣 <添加名稱= 「(?www.nanaimo.ca | nanaimo.ca | secretnanaimo.com | www.secretnanaimo.com)」/> <添加名稱= 「www.nanaimo.ca」/> <添加名稱= 「nanaimo.ca」/> <添加名稱= 「secretnanaimo.com」/> <添加名稱基本上我們允許從任何openID登錄,但因爲我們的用戶沒有openID帳戶,我們讓我們創建一個for內部使用。我們不能成爲一個完全開放的提供者。 – Jeff 2010-03-19 17:08:16

+0

對不起...我想用NOT運算符的正則表達式技能並不好。但是我仍然認爲這個想法會起作用,如果有人能夠提出正則表達式來做正確的匹配。 – 2010-03-20 04:47:05

1

如果你想過濾允許登錄的用戶的供應商,這可能不是最好的方法,因爲它會破壞從委託到你的意思是信任的OP其他域委派標識符。

要在OP端點上進行篩選,請將OpenIdRelyingParty.EndpointFilter屬性設置爲僅針對您喜歡的端點返回true的函數,對於那些您不喜歡的端點則返回false。