【发布时间】:2016-12-22 13:32:44
【问题描述】:
当我从 API 管理 (APIM) 调用我的 API 时,我在 RequestContext 或标头中看不到证书。
我有以下设置:
我的应用在定价层上使用服务计划:基本:1 小
我正在订阅开发者计划福利
我认为这意味着我可以使用证书
我将证书上传到: 天蓝色 | APIM 实例 |发布者门户 |安全 |客户证书
对于网站
"clientCertEnabled": true,
对于 API 范围
<inbound>
<base />
<authentication-certificate thumbprint="58D06D6E3265F6AE841527ABDF721F260871B6A5" />
</inbound>
APIM 公开 API 的 HTTPS URI
我在我的 AuthorizeAttribute 类中使用此代码从请求中读取证书:
protected override bool IsAuthorized(HttpActionContext actionContext)
{
var cert = actionContext.RequestContext.ClientCertificate;
我在控制器动作中使用它:
X509Certificate2 clientCertInRequest = RequestContext.ClientCertificate;
我相信这一切在本周早些时候都有效,但是当我尝试 Azure 时,我写下了我所做的,破坏了我的设置并从头开始测试我的理解。
现在我被卡住了。
我错过了什么/做错了什么?
【问题讨论】:
-
您使用的是 https ServiceURL 吗?
-
啊,就是这样。我为 Web API URL 方案勾选了 HTTPS,因此我希望 Web 服务 URL 能够检测到并更改。它没有。我想这是一个错误。
-
我们允许前端是HTTPS,后端是HTTP,反之亦然。不过我之前也犯过同样的错误。也许我们可以确定您是否上传了需要使用 HTTPS 后端的证书。
-
我添加了一个答案,这样我们就可以跟踪哪些问题已经解决,哪些问题没有解决:-)
-
啊,我没明白这 2 个设置引用了不同的 URL
标签: azure-api-apps azure-api-management