我有一个REST API,Azure AD B2C正在调用它(通过自定义策略中的技术资料)。我需要保护api。但是由于Azure身份验证之前正在调用它(基本上只需要检查电子邮件是否已存在于数据库中或是否不在登录流程中),因此它没有Authorize属性。我在此文档之后的技术资料的元数据中为此REST API的自定义策略中配置了ClientCertificate AuthenticationType。https://docs.microsoft.com/en-us/azure/active-directory-b2c/secure-rest-api
所以基本上我的元数据看起来像这样:
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">ClientCertificate</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
</CryptographicKeys>
但是当我从浏览器中调用其余的api时,仍然可以访问它。我不确定是否错过了某些内容,但是此过程是否不应该保护您的api,因此只有Azure可以调用它?
REST API相互之间需要使用客户端证书进行身份验证。还需要在REST API附近对自定义策略中的Configuration Client证书进行验证。
您可以在Azure API Management中使用客户端证书身份验证来保护后端服务,也可以在code中配置客户端证书身份验证>