繁体   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