여러 POCO를 작성한 다음 DbContext (FooDbContext)를 작성한 다음 DataService < FooDbContext> calll FooDatService에서 DataService 클래스 디바이스를 작성했습니다. 실버 라이트 앱의 모든 데이터에 액세스 할 수 있으며 웹 브라우저를 시작하면 URL을 통해 예상대로 액세스 할 수 있습니다. 이제는 성공적인 로그인 후에 만 DataService를 허용하려고합니다.EF 5.0 코드에 보안을 추가하는 방법 먼저 WCF DataService
1
A
답변
0
내가 전에
http://netpl.blogspot.com/2010/04/aspnet-forms-authentication-sharing-for.html
같은 삼년에 아이디어를 블로그에 한이 형태의 서비스를 호출 할 수 있습니다 사용자 만 로그인 그래서 당신의 호출을 보호하기 위해 쿠키로 다시 사용하는 것입니다.
0
WCF 서비스에 서비스 권한 부여 관리자를 추가하여 서비스의 구현을 수정하지 않고 액세스 제어하에 해당 서비스의 모든 메소드와 엔드 포인트를 배치 할 수 있습니다.
만들기 및 WCF 서비스를 시작 :
위Uri[] restUris = new Uri[] { new Uri(baseUri, "Api/v1/") };
// substitute your service host type here. I'm using WCF OData DataServiceHost
restAPIServiceHost = new DataServiceHost(typeof(API.RestAPIService), restUris);
var saz = restAPIServiceHost.Description.Behaviors.Find<ServiceAuthorizationBehavior>();
if (saz == null)
{
saz = new ServiceAuthorizationBehavior();
restAPIServiceHost.Description.Behaviors.Add(saz);
}
saz.ServiceAuthorizationManager = new MyServiceAuthorizationManager();
restAPIServiceHost.Open();
은 Web.config의 마법을 통해 수행 할 수 있습니다. 당신의 MyServiceAuthorizationManager 구현에서
: 요청이 WCF 구현 방법에 파견되기 전에
public class MyServiceAuthorizationManager: System.ServiceModel.ServiceAuthorizationManager
{
public override bool CheckAccess(OperationContext operationContext, ref Message message)
{
var reqProp = message.Properties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty;
var authHeader = new AuthorizationHeader(reqProp.Headers[HttpRequestHeader.Authorization]);
bool authorized = // your code to decide if caller is authorized;
if (!authorized)
{
var webContext = new WebOperationContext(operationContext);
webContext.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
// optional: give caller hints where to go to login
webContext.OutgoingResponse.Headers.Add(HttpResponseHeader.WwwAuthenticate, String.Format("Bearer realm=\"{0}\"", baseUri.AbsoluteUri));
}
return authorized;
}
}
이 CheckAccess
방법은, 당신의 WCF 서비스에서받은 모든 요청에 대해 호출됩니다.
데이터 서비스의 호스트로 WCF 또는 MVC를 사용하고 있습니까? – Kane
MVC를 사용하지 않으므로 WCF를 추측하고 있습니다. –