我已经开始了一个新的.net核心项目,我将其配置为使用Google+ Api进行身份验证。我的客户端ID和密码使用dotnet用户密钥存储。当我建立我的码头图像时,我得到了
Unhandled Exception: System.ArgumentException: The 'ClientId' option must be provided.
我知道这是因为我的秘密没有提供给图像。我想知道的是如何在不将它们提交到存储库的情况下提供我的Id和Secret密钥,并仍在本地运行我的图像。
我想当我将它部署到服务器时,我可以将它们作为Env变量的一部分,我想我也可以在本地做到这一点,只是想知道是否有其他人有这个可能比我更优雅的解决方案。
我找不到其他人如何做到这一点的太多信息。
首先,秘密不是您应该用于部署的。通过帮助防止敏感数据存储在代码中/检查到源代码管理中,可以在开发过程中保护安全存储的秘密。看相关问题How do UserSecrets work in the Cloud?
你是对的,你应该使用环境变量代替或替代一些外部设置存储,如DB。
要添加Google+身份验证,您可以看到此guide。
在startup.cs中添加此代码段
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
在appsettings.json中添加此行
"Authentication": {
"Google": {
"ClientId": "ID FROM GOOGLE API",
"ClientSecret": "SECRET FROM GOOGLE API"
}