2011-02-09 4 views
1

다이제스트 인증은 요청 - 응답 메커니즘의 풍미처럼 보입니다. 클라이언트와 서버가 비밀번호 (MD5 또는 기타)와 섞인 임의의 문자열이며 네트워크를 통해 이러한 혼합 결과 만 전송됩니다.클라이언트는 다이제스트 HTTP 인증에서 챌린지 (nonce)를 선택할 수 있습니까?

일반적으로 챌린지 ("nonce")는 서버에 의해 선택되고 클라이언트로 전송됩니다. 다이제스트 인증에 대한 Wikipedia article은 샘플 "세션"을 나열합니다. 챌린지 ("nonce")는 서버에 의해 선택됩니다. IIS에서 내 컴퓨터의 IIS를 테스트했습니다. 다시 IIS에서 문제가 생성됩니다.

일부 게시물에서는 like this one이라는 챌린지가 클라이언트에 의해 생성됩니다. 클라이언트는 임의의 문자열을 생성하고 챌린지가있는 요청과 암호와 해당 챌린지의 결과를 보냅니다.

후자는 허용되고 널리 수용됩니까? 고객이 챌린지를 선택할 수 있습니까 ("nonce")?

답변

2

HTTP 다이제스트 인증에서 서버는 항상 nonce를 생성합니다.

그러나 HTTP 인증은 확장 가능하며 응용 프로그램은 다른 인증 방법 (기본 및 다이제스트 이상)을 구현할 수 있습니다. 링크 된 예에서 클라이언트는 WSSE (주로 SOAP 기반) 웹 서비스에 대한 인증 형식을 사용하여 인증합니다. WSSE에서 클라이언트는 nonce를 생성합니다.

1

Digest Access Authentication scheme은 클라이언트가 서버에 대해 자체 인증을하지만 이 아닌이 아닌 단방향 인증입니다. 서버 만 클라이언트가 인증되기 위해 올바르게 응답해야하는 챌린지를 발행합니다. 따라서 서버는 클라이언트가 확실한 지 알고 있지만 클라이언트는 서버가 진짜인지 여부를 모릅니다.

이제 링크 된 코드는 정반대입니다. 클라이언트가 서버에 인증을 요청합니다. 따라서 클라이언트는 서버가 확실한 지 알고 있습니다.

가장 좋은 것은 mutual authentication입니다.

+0

연결된 예에서 클라이언트는 서버에 전혀 문제를 제기하지 않으며 서버로부터의 문제를 선점합니다. –

+0

@ Phil : 괜찮습니까? 이것은 클라이언트가 자신을 인증하기 위해 임의의 nonce를 선택할 수 있음을 의미합니다. 그럼 진위 검증은 서버 측에서 어떻게 보이나요? 다행히도 통신은 HTTPS를 통해 이루어집니다. – Gumbo

+0

내 답변에 링크 된 WSSE 기사를 읽으십시오. 클라이언트는 자신의 암호 해시와 nonce를 전송합니다.이 암호는 서버가 자신의 암호 해시를 생성하여 클라이언트가 보낸 해시와 비교합니다. 다이제스트에 대한 작은 최적화가 가능합니다. 서버에서 nonce를 얻는 데 추가 왕복이 필요하지 않습니다. –