问题描述
||
我有一个服务器应用程序,使用SslStream类在其上使用TCP侦听器机制和SSL,非常类似于此线程中描述的内容:Tcpip侦听器套接字SSL流非常混乱
但是,我们的客户是所有操作系统(iOS,Android等)的移动设备。我有一个服务器端证书,但是我真正希望从我的客户端获得的身份验证只是通过基本身份验证协议提供的用户/密码字符串对。
如果来自客户端的初始连接为我提供了这些凭据,那么一切都很好-我解析了请求,提取了它们并进行了检查。但是,如果未提供它们-我该如何要求它们?
解决方法
HTTP状态代码401和
WWW-Authenticate: Basic
标头用于提示HTTP客户端发送用户名/密码字符串,如本例所示
客户端请求(无身份验证):
GET /private/index.html HTTP/1.11
Host: localhost
服务器响应:
HTTP/1.1 401 Authorization Required
Server: HTTPd/1.0
Date: Sat,27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm=\"Secure Area\"
Content-Type: text/html
Content-Length: 311
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
\"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd\">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=ISO-8859-1\">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
客户端请求(用户名\“ Aladdin \”,密码\“ open sesame \”):
GET /private/index.html HTTP/1.1
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==