10

関数は、従量課金プランで、クライアント証明書を使用した関数へのアクセスの承認をサポートしていますか? ここで説明されているアプローチに似たものはありますか? 基本的には、呼び出し元が有効なクライアント証明書を提示しない場合に接続要求を即座に拒否する関数ランタイムを探しています。その承認ルーチンをコードに実装する必要はありません。

4

3 に答える 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 に答える