2010-04-14 5 views
1

회원 가입 승인을 사용하는 웹 서비스를 호스팅하는 하나의 웹 사이트가 있습니다. 나는 webservice 사이트의 로그인 페이지로 되돌아 가지 않고 두 번째 사이트에서 내 webservice 호출을 통해 인증 할 수 있기를 원합니다. 이것을 어떻게 할 수 있습니까?회원 공급자 뒤에있는 웹 서비스에 액세스

부수적으로 사이트에 액세스하는 특정 호스트에 대해 사용자 지정 규칙을 허용하는 것이 가장 좋습니다. 따라서 요청이 www.mysite.com에서 오는 경우 승인을 무시합니다.

답변

1

web.config에서 <location/> 태그를 사용하여 특정 디렉토리 나 파일을 열 수 있습니다.

호스트에 의한 액세스 제어의 본질적인 방법이 있다고 나는 생각하지 않습니다.

이렇게하는 간단한 방법은 끝점이나 디렉토리를 지키는 간단한 HttpModule을 구현하는 것입니다.

using System; 
using System.Net; 
using System.Web; 

namespace HttpLibArticleSite 
{ 
    public class GuardDogModule : IHttpModule 
    { 
     #region IHttpModule Members 

     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += BeginRequest; 
     } 

     public void Dispose() 
     { 
      //noop 
     } 

     #endregion 

     private static void BeginRequest(object sender, EventArgs e) 
     { 
      HttpContext ctx = (HttpContext) sender; 

      if (ctx.Request.Url is not guarded) return; 

      if (ctx.Request.Headers["take your pick"] != what 
      you want) 
      { 
       ctx.Response.StatusCode = (int) HttpStatusCode.Forbidden; 
       ctx.Response.End(); 
      } 
     } 
    } 
} 

분명히, 테스트되지 않았지만 필요한 곳으로 안내 할 것입니다. 배포 방법을 보려면 web.config system.web/httpModules 섹션을 참조하십시오.

건배.

0

webservice 디렉터리에 web.config 파일을 배치하고 익명 액세스를 허용해야합니다. 또는 Windows 인증 만하고 가장 (impersonation)를 사용하여 전화를 인증 할 수 있습니다.

관련 문제