相关疑难解决方法(0)

如何使用客户端证书在Web API中进行身份验证和授权

我正在尝试使用客户端证书来使用Web API对设备进行身份验证和授权,并开发了一个简单的概念证明来解决潜在解决方案的问题.我遇到的问题是Web应用程序没有收到客户端证书.一些人报告了这个问题,包括在本问答中,但没有一个人有答案.我希望提供更多细节来重振这个问题,并希望得到我的问题的答案.我对其他解决方案持开放态度.主要要求是用C#编写的独立进程可以调用Web API并使用客户端证书进行身份验证.

此POC中的Web API非常简单,只返回单个值.它使用一个属性来验证是否使用了HTTPS以及是否存在客户端证书.

public class SecureController : ApiController
{
    [RequireHttps]
    public string Get(int id)
    {
        return "value";
    }

}
Run Code Online (Sandbox Code Playgroud)

以下是RequireHttpsAttribute的代码:

public class RequireHttpsAttribute : AuthorizationFilterAttribute 
{ 
    public override void OnAuthorization(HttpActionContext actionContext) 
    { 
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps) 
        { 
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden) 
            { 
                ReasonPhrase = "HTTPS Required" 
            }; 
        } 
        else 
        {
            var cert = actionContext.Request.GetClientCertificate();
            if (cert == null)
            {
                actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
                {
                    ReasonPhrase = "Client Certificate Required"
                }; 

            }
            base.OnAuthorization(actionContext); 
        } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

在这个POC中,我只是检查客户端证书的可用性.一旦这个工作,我可以添加证书中的信息检查,以验证证书列表. …

c# security client-certificates ssl-certificate asp.net-web-api

40
推荐指数
3
解决办法
8万
查看次数

将客户端证书添加到.net核心Httpclient

我正在玩.Net Core并构建一个利用支付API的API.需要将客户端证书添加到双向SSL身份验证请求中.如何使用HttpClient在.Net Core中实现这一目标?

我查看了各种文章,发现HttpClientHandler没有提供添加客户端证书的任何选项.

请指教

.net c# dotnet-httpclient .net-core asp.net-core

39
推荐指数
4
解决办法
5万
查看次数