错误必须提供“ClientId”选项。 当build立一个docker形象

我已经开始了一个新的.net核心项目,并将其configuration为使用Google+ Api进行身份validation。 我的客户端ID和秘密使用dotnet用户秘密进行存储。 当我build立我的docker形象,我得到

Unhandled Exception: System.ArgumentException: The 'ClientId' option must be provided. 

我知道这是因为我的秘密没有提供给图像。 我想知道的是我怎样才能提供我的ID和密钥,而不提交他们的存储库,仍然在本地运行我的形象。

我在想,当我把它部署到服务器时,我可以将它们作为Envvariables的一部分,我想我也可以在本地执行这个操作,只是想知道是否有其他人有解决scheme,可能比我的更优雅。

我只是无法find其他人如何做这件事的信息。

首先,秘密不是你应该用来部署的。 通过帮助防止敏感数据被存储在代码/签入到源代码控制中,在开发过程中存在安全存储的秘密。 查看相关的问题UserSecrets如何在云中工作?

你是对的,你应该使用环境variables来代替,或者作为替代,一些外部设置存储如DB。

要添加Google+身份validation,您可以看到本指南 。

在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" }