如何让浏览器弹出默认用户认证提示?
How to make the browser prompt for default user authentication pop up?
我有一个 C# 中的 MVC 应用程序。我需要它来提示默认的浏览器身份验证登录弹出窗口,如下图所示。
然后应用程序应该使用 Active Directory 对其进行验证并从 AD 获取有关用户的一些其他信息。
如果我有用户名,我在从 AD 验证和获取用户信息时没有问题。
所以我的问题是如何让浏览器提示这种模式对话框以及如何访问用户的输入以使用我的 AD 验证它?
这是我目前所拥有的。代码只会获取登录用户的用户名,不会提示弹窗:
private string GetUsernameFromLogon()
{
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
int index = userName.LastIndexOf("\");
if (index > 0)
return userName.Substring(index+1);
else
return null;
}
需要告知浏览器它必须在后续的 HTTP 请求中提供基本身份验证。为此,您需要设置 HTTP header:
"WWW-Authenticate", "Basic"
这将通知浏览器下一个请求将具有基本的身份验证凭据
这是一个 C# 示例:
Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");
我有一个 C# 中的 MVC 应用程序。我需要它来提示默认的浏览器身份验证登录弹出窗口,如下图所示。
然后应用程序应该使用 Active Directory 对其进行验证并从 AD 获取有关用户的一些其他信息。
如果我有用户名,我在从 AD 验证和获取用户信息时没有问题。
所以我的问题是如何让浏览器提示这种模式对话框以及如何访问用户的输入以使用我的 AD 验证它?
这是我目前所拥有的。代码只会获取登录用户的用户名,不会提示弹窗:
private string GetUsernameFromLogon()
{
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
int index = userName.LastIndexOf("\");
if (index > 0)
return userName.Substring(index+1);
else
return null;
}
需要告知浏览器它必须在后续的 HTTP 请求中提供基本身份验证。为此,您需要设置 HTTP header:
"WWW-Authenticate", "Basic"
这将通知浏览器下一个请求将具有基本的身份验证凭据
这是一个 C# 示例:
Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");