我有一个ASP。使用[Authorize]
属性和JWT对用户进行身份验证的。NET 6 API。直到今天,它还是唯一运行在IIS上的实例。现在我们被要求迁移到docker容器+ Kubernetes(在Azure下)来水平扩展。当在多个docker实例上运行时,这如何工作?身份验证cookie在两个实例中都能正常工作吗?或者我必须将身份验证移到与JWT不同的东西上吗?
Thanks in advance
在多个实例中,它将不起作用。因为在默认模式下,数据保护键绑定到实例。如本文
所述,有各种方法可以使它们在实例之间共享。https://learn.microsoft.com/en - us/aspnet/core/security/data protection/configuration/overview?view=aspnetcore - 7.0
对于在Azure中的部署,最好是使用带有Azure Vault保护的Azure存储
builder.Services.AddDataProtection()
.PersistKeysToAzureBlobStorage(new Uri("<blobUriWithSasToken>"))
.ProtectKeysWithAzureKeyVault(new Uri("<keyIdentifier>"), new DefaultAzureCredential());