2010-03-17 4 views
2

누구든지 DotNetOpenAuth에 대한 문서를 가지고 있으며 목록 및 블랙리스트를 처리하는 방식은 무엇입니까? 그것은 어떤 사이트가 whilelist에없는 경우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> 

내가 원하는 것은 요청을 취소하는 것입니다. 현재 버전 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.secretnanaimo.com"/> 기본적으로 우리는 모든 openID에서 로그인 할 수 있지만 사용자가 openID 계정을 가지고 있지 않기 때문에 내부적으로 사용하십시오. 우리는 완전한 오픈 제공자가 될 수 없습니다. – Jeff

+0

죄송합니다 ...NOT 연산자를 사용한 정규식 기술은 그리 좋지 않다. 하지만 누군가가 올바른 일치를하기 위해 정규식을 생각해 낼 수 있다면 여전히 아이디어가 효과가 있다고 생각합니다. –

1

사용자를 로그온 할 수있는 공급자를 필터링하려고하면 신뢰할 수있는 OP에 위임 한 다른 도메인의 위임 된 식별자를 손상시킬 수 있으므로이 방법이 가장 좋은 방법은 아닙니다.

OP 끝점에서 필터링하려면 OpenIdRelyingParty.EndpointFilter 속성을 원하는 끝점에 대해 true를 반환하는 함수로 설정하고 그렇지 않은 경우 false로 설정합니다.