C# 在何处/如何存储或生成客户机密?

C# 在何处/如何存储或生成客户机密?,c#,google-api,youtube-api,google-oauth,youtube-data-api,C#,Google Api,Youtube Api,Google Oauth,Youtube Data Api,我正在YouTubeAPI Nuget包中使用C#NET 该项目是一个桌面应用程序(Avalonia),我需要访问用户的YouTube频道(例如更改视频标题) 我不知道我需要如何或在哪里存储客户机密,或者我是否可以生成它们,或者在用户无法访问我的客户机密的情况下,我将如何分发程序 是否每个想使用我的程序的用户都需要自己的客户端机密文件?如果是,如何自动生成?(因为我不想为每个想使用它的用户手动生成客户端机密) 如果他们只需要一个客户端的秘密,那么我如何分发它而不将文件以纯文本形式放入安装文件夹

我正在YouTubeAPI Nuget包中使用C#NET

该项目是一个桌面应用程序(Avalonia),我需要访问用户的YouTube频道(例如更改视频标题)

我不知道我需要如何或在哪里存储客户机密,或者我是否可以生成它们,或者在用户无法访问我的客户机密的情况下,我将如何分发程序

是否每个想使用我的程序的用户都需要自己的客户端机密文件?如果是,如何自动生成?(因为我不想为每个想使用它的用户手动生成客户端机密)

如果他们只需要一个客户端的秘密,那么我如何分发它而不将文件以纯文本形式放入安装文件夹

我真的不知道,也找不到任何关于这个应该如何工作的东西

我不知道我需要如何或在哪里存储客户机密,或者我是否可以生成它们,或者在用户无法访问我的客户机密的情况下,我将如何分发程序

因为您有一个桌面应用程序,所以在编译它时,请确保它是作为应用程序的一部分编译的,而不是像dll一样将clientsecret.json作为文件随应用程序一起发送。它应该被编译到您的应用程序中并以这种方式分发。如果您想使用更多OTT,您可以将其存储在服务器上和端点上,并让您的桌面应用程序在运行时或安装时获取它,并将数据存储在本地

是否每个想使用我的程序的用户都需要自己的客户端机密文件?如果是,如何自动生成?(因为我不想为每个想使用它的用户手动生成客户端机密)

不,您的应用程序应该有一个客户端id和客户端机密对,所有用户都将使用该对

如果他们只需要一个客户端的秘密,那么我如何分发它而不将文件以纯文本形式放入安装文件夹

我还没有看到你的代码,但是你真正需要的是客户端id和客户端密码本身,它们作为常量存储在你的应用程序的某个地方。实际上,您并不需要文件本身

我不知道我需要如何或在哪里存储客户机密,或者我是否可以生成它们,或者在用户无法访问我的客户机密的情况下,我将如何分发程序

因为您有一个桌面应用程序,所以在编译它时,请确保它是作为应用程序的一部分编译的,而不是像dll一样将clientsecret.json作为文件随应用程序一起发送。它应该被编译到您的应用程序中并以这种方式分发。如果您想使用更多OTT,您可以将其存储在服务器上和端点上,并让您的桌面应用程序在运行时或安装时获取它,并将数据存储在本地

是否每个想使用我的程序的用户都需要自己的客户端机密文件?如果是,如何自动生成?(因为我不想为每个想使用它的用户手动生成客户端机密)

不,您的应用程序应该有一个客户端id和客户端机密对,所有用户都将使用该对

如果他们只需要一个客户端的秘密,那么我如何分发它而不将文件以纯文本形式放入安装文件夹


我还没有看到你的代码,但是你真正需要的是客户端id和客户端密码本身,它们作为常量存储在你的应用程序的某个地方。实际上,您并不需要文件本身。

但是……在代码中对字符串进行哈希或加密,因为在记事本中打开可执行文件会以明文形式显示字符串。最好是使用字符串加密进行混淆…

但是…对代码中的字符串进行哈希或加密,因为在记事本中打开可执行文件会以明文形式显示字符串。如果你用字符串加密混淆,最好…

好的,上面的答案是我的答案,但我想(用代码)分享我将如何确切地执行他们所说的

  • 我的CI将获取我的客户id和机密以及as机密(我正在使用Github操作)

  • 我在代码中创建字符串常量:

  • private const string ClientId=“CLIENT\u ID”;
    private const string ClientSecret=“CLIENT\u SECRET”;
    
  • 让CI将这些代码行更改为实际的客户端id和密码
  • private const string ClientId=“实际的客户端ID”;
    private const string ClientSecret=“实际的客户端密码”;
    
  • 让CI在
    dotnet publish
    之后混淆生成的dll,以便更难对其进行反编译。(我正在努力让ConfuserEx工作)

  • 好的,上面的答案是我的答案,但我想分享(与代码)我将如何确切地去做他们所说的

  • 我的CI将获取我的客户id和机密以及as机密(我正在使用Github操作)

  • 我在代码中创建字符串常量:

  • private const string ClientId=“CLIENT\u ID”;
    private const string ClientSecret=“CLIENT\u SECRET”;
    
  • 让CI将这些代码行更改为实际的客户端id和密码
  • private const string ClientId=“实际的客户端ID”;
    private const string ClientSecret=“实际的客户端密码”;
    
  • 让CI在
    dotnet publish
    之后混淆生成的dll,以便更难对其进行反编译。(我正在努力让ConfuserEx工作)

  • 所以我需要将其编译到应用程序中,快速搜索可以找到ASP.NET的应用程序机密。也许我也可以将其用于.net应用程序,谢谢。我不想使用服务器。顺便说一句,如果你想查看它,这里是代码:记住你不能将你的客户端id作为开源项目的一部分发布,你的客户端id不允许与任何人共享。是的,客户端id在我的机器上是本地的,从git中排除。问题只是我需要找出如何安全地传播秘密,但这可能是一个难题