如何在 Controller for .NET Web API 2.0 中获取基本身份验证 username/password

How to obtain basic authentication username/password in Controller for .NET Web API 2.0

我已经通读了有关如何为 Web API 2.0 创建基本身份验证过滤器的文档,它看起来还不错。然而..

我遇到的问题是我还需要控制器本身(在 POST / PUT / DELETE 上)中的用户名和密码信息才能传递给第 3 方 .NET API 对于控制器采取的操作的 authentication/authorization。

是否有 'proper way' 可以做到这一点?

我可以看到 RequestContext(在 Controller 中)包含有关 Principal 的信息。但这似乎只到名称......所以它没有我需要传递给第 3 方界面的密码。

基本身份验证将 username:password 转换为 base64,因此您只需提取授权 header 并解码其值:

AuthenticationHeaderValue authenticationHeaderValue = Request.Headers.Authorization;
var userNamePasswordString = Encoding.UTF8.GetString(Convert.FromBase64String(authenticationHeaderValue.Parameter));
//username:password