3

폼 인증을 사용하는 C# ASP.NET 3.5 웹 응용 프로그램이 있습니다. 사용자는 login.aspx에서 사용자 이름과 암호로 로그인하고 사용자 정의 인증 논리를 사용하여 인증 한 다음 input.aspx로 이동하여 일부 매개 변수를 입력하고 output.aspx에서 응답을받습니다. 그들이 자신을 인증하지 않고 input.aspx에 액세스하려고하면 login.aspx로 리디렉션됩니다.ASP.NET 웹 응용 프로그램의 일부인 ASP.NET 웹 서비스의 사용자를 인증하는 방법은 무엇입니까?

동일한 사용자가 Unix 환경에서 UI를 사용하지 않고이 웹 응용 프로그램의 기능을 사용할 수 있기를 원합니다. 그래서이 웹 응용 프로그램에 웹 서비스 파일 (.asmx)을 추가했습니다. 웹 서비스가 기존 웹 응용 프로그램의 global.asax에 코드 파일을 사용하기 때문에이 웹 서비스에 대한 별도의 프로젝트를 만들지 않았으며 웹 서비스 코드를 복제해서는 안됩니다.

사용자를 인증하는 방법을 모르지만 웹 서비스 기능이 정상적으로 작동합니다. 웹 서비스 클라이언트는 사용자 이름과 비밀번호를 한 번 보내고 (아마도 '로그인'웹 메소드를 사용하여 인증 할 수 있습니다.) 여러 요청을 보낼 수 있어야합니다 (아마도 '로그 아웃'웹 메소드를 호출하거나 세션까지/쿠키 만료).

웹 요청이 login.aspx 페이지로 리디렉션되지 않도록 web.config에서 location 태그를 사용하여 Forms 인증에서 .asmx 파일을 제외했습니다. (나는 그 방법이 될지 모르겠다.)하지만 사용자가 웹 애플리케이션에서 인증되지 않아서 서비스가 사용하는 웹 애플리케이션 코드가 액세스 할 수 없다고 생각하고 있는가?

답변

2

이 링크 (http://msdn.microsoft.com/en-us/library/ms977327.aspx)를 빨리 읽은 다음이 번호 (http://msdn.microsoft.com/en-us/library/9z52by6a(VS.80).aspx)를 따르는 것이 좋습니다. 사용자 지정 보안 헤더는 폼 인증 외부에서 웹 서비스의 보안을 유지하려는 위치에 있습니다. 그것은 각 메소드 호출이 헤더가 제공되어야 함을 의미합니다.

+0

감사합니다. 웹 서비스가 사용자를 인증 할 때 웹 응용 프로그램은 사용자가 웹 양식 login.aspx를 사용하여 로그인 할 때와 마찬가지로이 사용자가 로그인했는지 확인해야합니다. – engg

+0

이것이 바로 SOAP 헤더가 달성 할 수있는 것입니다. 내장 된 자격 증명은 동일 할 수 있습니다. 그들은 각 요청에 대해 통과/첨부되어야합니다. –

+0

Ok 웹 요청의 SOAP 헤더에 사용자 자격 증명이 전달되면 요청이 login.aspx 페이지로 리디렉션되지 않습니까? – engg

관련 문제