2009-03-13 8 views
5

저는 오랫동안 프로그래밍 해 왔지만 전 세계에서 가장 경험이 많은 개발자는 아닙니다. 닷 개발자입니다. 최근에 웹 사이트에 양식 인증을 사용하는 프로젝트를 선택했습니다. 먼저 .NET 1.1의 폼 인증을 살펴 보았습니다. 그 당시에는 기본 인증 양식으로 사용하지 않기로 결정한 몇 가지 제한 사항이있었습니다.폼 인증

이 프로젝트를 사용하려면 사용자가 양식 인증을 지원하는 역할과 그룹 구성원 자격이 있어야합니다. 예를 들어 '사용자 A'는 '회사 A'의 '관리자'입니다. 양식 인증이 이러한 종류의 사용자 구조를 지원합니까?

나는 폼 인증이 암호를 일반 텍스트로 다시 전송한다는 점도 읽었습니다. 이 클라이언트는 SSL을 사용하지 않습니다. 사실입니까?

현재 코드베이스는 양식 인증을 사용하지만 그룹을 지원하지 않습니다 (역할을 지원합니다). 그래서 폼 인증을 수정하여 필요한 그룹을 지원하거나 폼 인증을 추출하고 일반적으로 사용하는 인증 프레임 워크를 사용해야합니다. 폼 인증이 그룹을 지원하고 충분히 안전하다면 나는 그걸 고수해야한다. 양식 인증에 보안 문제가 있거나 그룹을 지원하지 않는 경우 해당 인증 양식을 제거해야합니다.

저는 인터넷에서 장단점이있는 기사를 찾았지만 행운은 없습니다. 너희들은 어떻게 생각하니?

+0

.net 1.1에 바인딩 되었습니까? – Stormenet

+0

아니요, 2.0 또는 3.5를 사용할 수 있습니다. 처음에는 1.1에서 다시 싫어한다고 결정한 후 양식 인증을 배우기 위해 돌아 가지 않았습니다. 내가 읽은 것부터 지금은 나아 보인다. 그러나 나는 그것에 대해 먼저 의견을 얻을 것이라고 생각했다. – mlindegarde

답변

5

귀하의 요구 사항을 충족시키기 위해 양식 인증을 Membership과 함께 사용합니다. 응용 프로그램이 SQL Server 데이터베이스를 사용하는 경우이를 달성하기 위해 멤버십 공급자로 SQLMembershipProvider을 사용할 수 있습니다.

Examining ASP.NET 2.0's Membership, Roles, and Profile을 참조하십시오.

연결이 보안되지 않은 경우 암호를 일반 텍스트로 보내는 것에 대한 우려.

실제로 전송되는 암호는 일반적으로 해시 (알고리즘은 선택한 멤버십 공급자에 따라 다름)이며 결국 저장됩니다. 물론 연결이 보안되지 않은 경우 해시 된 암호를 검색하여 응용 프로그램을 해킹하는 데 사용할 수 있지만 일반 사용자 암호가 도용되어 사용되는 가능성을 제거합니다. 다른 서비스에 액세스 할 수 있습니다 (많은 사람들이 여러 서비스에서 동일한 비밀번호를 사용함). 따라서 보안을 위해서는 https를 사용해야합니다.

경고의 메모로서, 나는 그 분야의 전문가가 아니지만 아주 최근에 당신이 묘사하고있는 비슷한 문제에 직면했습니다.하지만 당신이 이것을 유용하다고 생각할 수도 있습니다.

+0

암호를 지우려면 암호가 해시로 보내집니다. 로그인 양식을 제출할 때 (https가 필요한 경우)받은 비밀번호는 브라우저로 전송되지 않습니다.역할 제공자는 자신의 역할/회사 권한 또는 기본 RoleProvider를 처리하지 않습니다 (비록 당신이 Admin-CompanyA :)에 영리해질 수는 있지만). – eglasius

+0

매우 유익한 링크 주셔서 감사합니다. 나는 "투표 업 (Vote Up)"을 할 것이지만 아직 그렇게할만한 충분한 평판은 없다. – mlindegarde

+0

@Freddy - 조언 주셔서 감사합니다 - 금요일 오후에 질문에 대답하지 않는 법을 배워야합니다 - 특히 13 일 금요일 일 경우). 자유 시간을 찾으면 내 대답을 편집합니다. – kristof

1

폼 인증은 암호를 일반 텍스트로 다시 보내지 않습니다. login/pwd가 https ... ssl을 사용할 때이를 보호 할 수있는 한 보안 위험은 없습니다.

실제로 인증을해야하는 경우 ... 인증을위한 양식 인증에 의존하고 자신의 메커니즘으로 인증을 수행 할 수 있습니다.

+0

앞서 언급했듯이 HTTPS/SSL을 사용하지 않기 때문에 이것이 내 관심사였습니다. 그러나, 그것은 계획 텍스트로 서버에 관계없이 보내집니다 가정합니다. 나는 폼 인증을 사용하고 인증에 의해 제공된 ID를 기반으로 나만의 인증을 할 수 있다고 생각했습니다. – mlindegarde

+0

자신 만의 인증을 할 수 있지만 가장 쉬운 방법은 ID가 아닌 사용자 이름 (로그인 한 후 HttpContext.Current.User.Identity.Name)을 가져 오는 것입니다. – eglasius

1

양식 인증은 내가 선택한 것에 대한 탁월한 선택입니다. 역할을 지원하지만 그룹을 지원하지는 않습니다. 그러나 필요한 경우 그룹 문제를 완화하는 데 사용할 수있는 활성 디렉토리 통합에 대한 지원이 내장되어 있습니다. 개인적으로, 나는 가지고있는 것을 고수하고 그것에 대해 더 많이 알게됩니다. AD 인증 모드가 아닌 Forms Auth의 Forms 모드를 사용하려면 기존 양식 인증 데이터베이스를 사용하여 그룹 지원을 구축하는 것이 좋습니다.

these 비디오에서 Microsoft의 양식 인증 정보를 보는 것이 좋습니다. 당신은 꽤 사용하기 쉽다는 것을 알게 될 것입니다. 물론 강력하고 유연한 프레임 워크이기 때문에 함께 던질 수있는 것이 아닙니다. 당신은 그것들을 읽고이 비디오들을 볼 것입니다. 그러나 익숙해지면 개발 커뮤니티가 안전하고 지원되며 잘 수용된다는 것을 알게 될 것입니다.

Yikes, 방금 다시 질문을 검토했으며 SSL을 사용하지 않는다고 말했습니다. 이 사이트는 얼마나 안전해야합니까? 제게는 저의 첫번째 사업은 SSL로 이전하는 것입니다!

+0

이것은 인터넷 (intrAnet이 아닌) 응용 프로그램이라는 점에 유의해야합니다. 사용자가 인터넷을 통해 웹 사이트에 등록 할 때 여전히 Active Directory를 사용할 수 있습니까? 필자는 Windows 보안 전문가는 아니지만 Active Directory는 인트라넷 전용이라고 생각했습니다. – mlindegarde

+0

예, 외부 AD 포리스트를 사용하여 인증 할 수 있습니다. –

0

db는 일반 암호 텍스트를 저장하지 않습니다. md5 또는 다른 해싱 방법을 사용합니다 ... 나는 문자열을 클라이언트 측 또는 서버 측으로 변환하는 auth wheter에 대해 서로에 대해 2 개의 해시 문자열을 일치시키는 것을 알고 있습니다. 아마 .. 브라우저 아마 ... 당신이 ssl을 사용하는 것에 대해 생각하고 있다면 나는 ASP.net 양식 인증을 사용해야한다고 생각하지 않는다. 자신의 폼 기반 인증을 수행하고 광고 마이닝을 할 시간. ...

1

양식 인증은 기본적으로 그룹을 지원하지 않습니다. 우리가하는 일은 사용자를 "인증"(자신이 누구인지 증명)하기 위해 사용하고 나서 우리 자신의 데이터 저장소를 사용하여 사용자를 "권한 부여"(사용자가 할 수있는 일을 설명)하는 것입니다.

0

모든 입력에 감사드립니다. 다른 프로젝트에서 내 자신의 인증 라이브러리를 계속 사용할 것이라고 생각하지만이 클라이언트를 위해해야 ​​할 가장 좋은 일은 이미 부분적으로 자리를 잡은 폼 인증을 유지하는 것입니다.

Visual Studio 및 .Net 플랫폼을 사용하여 개발했지만 필자는 "Microsoft"방식으로 일하는 것을 항상 좋아하지는 않습니다. 나는 "마이크로 소프트"방식이 당신이하고있는 일을 안다면 많은 피해를 피할 수 있다는 것을 알게되었습니다.

입력하신 내용을 다시 한번 감사드립니다.

+0

운 좋게도 아무도 여기에 무언가를 사용하도록 강요하지 않습니다. –

0

SSL을 사용하지 않는 경우 암호를 일반 텍스트로 전달해야합니다. 따라서 SSL에 대한 필요성.

.Net 양식 인증은 적절하게 해시하고 암호를 db에 저장하지만 이는 전신을 통해 자격 증명을 보호하지 않습니다. 그러나 이것은 모든 웹 프레임 워크에 적용됩니다.

이 그룹의 경우 앱에서이를 구현하거나 도움이되는 라이브러리를 찾아야합니다.