【问题标题】:How to obtain basic authentication username/password in Controller for .NET Web API 2.0如何在 Controller for .NET Web API 2.0 中获取基本身份验证用户名/密码
【发布时间】:2018-06-18 15:16:18
【问题描述】:
我已经阅读了有关如何为 Web API 2.0 创建基本身份验证过滤器的文档,并且看起来还不错。不过..
我遇到的问题是,我还需要控制器本身中的用户名和密码信息(在 POST/PUT/DELETE 上)才能传递给第 3 方 .NET API 以对操作进行身份验证/授权由控制器采取。
有没有“正确的方法”来做到这一点?
我可以看到 RequestContext(在控制器中)包含有关 Principal 的信息。但这似乎只是名称......所以它没有我需要传递到第 3 方界面的密码。
【问题讨论】:
标签:
asp.net-web-api2
basic-authentication
【解决方案1】:
基本身份验证将 username:password 转换为 base64,因此您只需提取 Authorization 标头并解码它的值:
AuthenticationHeaderValue authenticationHeaderValue = Request.Headers.Authorization;
var userNamePasswordString = Encoding.UTF8.GetString(Convert.FromBase64String(authenticationHeaderValue.Parameter));
//username:password