java 获取windows用户_Asp net Core获取用户Windows用户名

ASP .net似乎没有授权2种不同类型的连接,所以我让主站点进行了表单身份验证,我创建了一个小API:

[Authorize]

[Route("api/[controller]")]

public class ValuesController : Controller

{

[HttpGet]

public ActionResult Get()

{

return Json(User.Identity.Name);

}

}

配置Windows身份验证 .

这是主网站中的LoginController:

String responseString = "";

using (var client = new HttpClient())

{

client.BaseAddress = new Uri("http://myapiURL");

client.DefaultRequestHeaders.Accept.Clear();

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var response = client.GetAsync("api/values").Result;

if (response.IsSuccessStatusCode)

{

responseString = response.Content.ReadAsStringAsync().Result;

responseString = Regex.Unescape(responseString).Replace("\"","");//Because the response is something like \\"Domaine\\\\Username\"\

}

else

{

return View();//server cannot be found or Windows authentication fail => form Login

}

}

String username = "";

String domain = "";

if (responseString != "" && responseString.Contains("\\"))

{

domain = responseString.Split('\\')[0];

username = responseString.Split("\\")[1];

if(domain !="MYDOMAIN")

{

return View();//Not in the correct domain => form Login

}

}

else

{

return View();//Not the correct response => form Login

}

UserPrincipal user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), username);

if (null != user)

{

CustomAutomaticLogin(user)//All seems ok, try to log the user with custom login with AD informations

}

else

{

return View()//Not in AD => form login

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值