関数は、従量課金プランで、クライアント証明書を使用した関数へのアクセスの承認をサポートしていますか? ここで説明されているアプローチに似たものはありますか? 基本的には、呼び出し元が有効なクライアント証明書を提示しない場合に接続要求を即座に拒否する関数ランタイムを探しています。その承認ルーチンをコードに実装する必要はありません。
質問する
9243 次
3 に答える
5
私が思いついたコードは次のとおりです。注: これはAzure Functions v1用で、 req がHttpRequestMessage
発信者:
X509Certificate2 clientCert = req.GetClientCertificate();
if (!IsValidClientCertificate(clientCert))
{
return req.CreateErrorResponse(HttpStatusCode.Unauthorized, "A valid client certificate is not found");
}
Azure Functions v2の場合、次HttpRequest
を使用してクライアント証明書を取得できます。req.HttpContext.Connection.ClientCertificate
基本的な検証機能:
static bool IsValidClientCertificate(X509Certificate2 clientCert)
{
// check the cert's thumbprint against expected thumbprint
if (clientCert.Thumbprint != "<expected thumprint>"
{
return false;
}
// check that we're within the cert's validity period
if (DateTime.Now > clientCert.NotAfter || DateTime.Now < clientCert.NotBefore)
{
return false;
}
// optionally check cert chaining validity
// if(!clientCert.Verify()) { return false; }
}
于 2019-07-02T08:27:23.637 に答える
1
はい、そうです。私が正しく理解している場合、クライアント証明書のない https リクエストは 403 で拒否する必要があります。
これは、Azure CLI で有効にする方法です。
az webapp update --set clientCertEnabled=true --name <app_name> --resource-group <group_name>
マイクロソフトのドキュメントはこちら
これは、Azure ポータルの Azure Function App => Configuration => General Settings から行うこともできます。
于 2020-11-28T01:25:12.433 に答える