我在Azure应用服务上有一个运行Azure Linux的PHP应用程序。
在我的本地机器上,我使用openssl创建了公钥-私钥对,并在JWT身份验证流中使用这些密钥
访问令牌创建
$private_key = file_get_contents(ROOTPATH . 'localkey.pem');
$access_payload = [...];
$access_token = JWT::encode($access_payload, $private_key, 'RS256');
访问令牌验证
$public_key = file_get_contents(ROOTPATH . 'localkey.pub');
$decoded_token = JWT::decode($access_token, new Key($public_key, 'RS256'));
我通过SSH登录在Azure应用服务示例上创建了公钥-私钥对。
现在,如何在横向扩展时跨示例使用相同的公钥-私钥对?使用自动扩展时,.pub
和.pem
文件是否会复制到每个示例?推荐的方法是什么?
1条答案
按热度按时间7fyelxc51#
现在,如何在横向扩展时跨示例使用相同的公钥-私钥对?使用自动扩展时,
.pub
和.pem
文件是否会复制到每个示例?推荐的方法是什么?默认情况下,Azure自动缩放将使用默认配置,它将动态缩放您的示例,并在不需要时删除它们。
你可以使用Azure密钥保管库存储你的公钥和私钥,并使用它们向App Service进行身份验证。
我在Azure中部署了一个PHP应用程序,并创建了一个Azure Key Vault示例,如下所示:-
我为Azure应用服务创建了托管身份,并将其所有者角色提供给部署应用服务和密钥保管库的资源组,如下所示:-
提供了对密钥库Keys的相同托管身份访问,我还在访问策略中添加了一个名为Powershell的服务主体,以便稍后在PHP代码中使用它来验证App的密钥。
创建密钥值存储在里面的秘密,如下所示:-
访问策略:-
使用以下代码通过密钥保管库验证Azure应用服务托管标识:-
您也可以使用以下代码向服务主体进行身份验证:-
在应用服务配置中添加AZURE_CLIENT_ID和AZURE_CLIENT_SECRET:-
或者,您可以在Web应用的"配置"设置中添加WEBSITE_SSH_PUBLIC_KEY以及"公钥"的内容,以便应用服务使用此密钥。
保存设置并重新启动Web应用。
Use Key Vault from App Service with Azure Managed Identity - Code Samples | Microsoft Learn