簡體   English   中英

MS Azure資源提供者SDK-身份驗證

[英]MS Azure Resource Provider SDK - Authentication

我正在嘗試實現此處描述的MS Azure身份驗證: https : //github.com/Azure/azure-resource-provider-sdk/tree/master/docs#authentication,但唯一說明的是:

您負責驗證呼叫者的證書指紋。 僅接受來自具有正確公共密鑰的證書的呼叫。

怎么做? 最好在PHP中。 提前致謝。

根據我的理解,資源提供程序(RP)API是HTTP RESTful,這里是證書: https : //github.com/Azure/azure-resource-provider-sdk/blob/master/docs/misc/AzureStoreLatest.cer由Azure用來調用您的RP。 要實現https://github.com/Azure/azure-resource-provider-sdk/tree/master/docs#authentication上提到的RP身份驗證,您可以利用驗證從請求發送到RP的證書。 根據我的經驗,通常我們會檢查證書的序列號或指紋以驗證其授權,這些官方樣本發布在https://github.com/Azure/azure-resource-provider-sdk/tree/master/samples使用相同的方式進行證書驗證。 例如,下面是AuthorizeRequest的C#版本供您參考:

    public static bool AuthorizeRequest(X509Certificate2 clientCertificate)
    {
        if (ConfigurationDataProvider.AzureStoreRequestAuthorization)
        {
            if (clientCertificate == null || (
                // BaltimoreRdfeExtensibilityClientProd.cer, will expire on Saturday, February 14, 2015
                !clientCertificate.Thumbprint.Equals("F2693F8487AB975A28C19610A672E59DDCF873F2", StringComparison.OrdinalIgnoreCase) &&

                // BaltimoreRdfeExtensibilityClientStage.cer, will expire on Saturday, February 14, 2015
                !clientCertificate.Thumbprint.Equals("19D02B07DEC22C0998BB266A7DA5BA8B4D42A0A6", StringComparison.OrdinalIgnoreCase)
            ))
            {
                Logger.ErrorFormat(
                    format  : "Unauthorized access to Azure Store integration endpoints: {0}, {1}", 
                    arg0    : clientCertificate != null ? clientCertificate.Subject     : "<null>",
                    arg1    : clientCertificate != null ? clientCertificate.Thumbprint  : "<null>"
                );

                return false;
            }
        }

        return true;
    }

在PHP和OpenSSL中,我們可以利用SSL_CLIENT_M_SERIAL變量: http ://pilif.github.io/2013/07/how-to-accept-ssl-client-certificates/獲取客戶端證書的序列號,然后檢查該值等於AzureStoreLatest.cer的序列號。 (您可以像上面的C#示例一樣在代碼中對序列號進行硬編碼)

在此處輸入圖片說明

我想指出一些使用RP API的概念和技巧:

https://github.com/Azure/azure-resource-provider-sdk/blob/master/docs/concepts.md

https://github.com/Azure/azure-resource-provider-sdk/blob/master/docs/tips-and-tricks.md

如果您在實施過程中還有其他顧慮,請隨時告訴我們並提供有關您嘗試過的內容的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM