C# 如何生成OAuth客户端标识符和客户端密码?

C# 如何生成OAuth客户端标识符和客户端密码?,c#,asp.net-mvc-3,dotnetopenauth,oauth-2.0,C#,Asp.net Mvc 3,Dotnetopenauth,Oauth 2.0,我正在实现一个OAuth2提供商,我希望在我的网站中有一个开发人员登录和注册第三方应用程序的区域。但我对如何生成应用程序的客户端标识符和客户端密码有疑问。它们应该是唯一的随机代码,还是必须向客户提供一些有意义的信息?我想它们可能是随机的 我一直在寻找如何做到这一点的最佳实践,但还没有找到那么多。因此,任何答案都将不胜感激 PD:我在.NET MVC3上开发了一个名为DotNetOpenAuth的库。规范不清楚如何生成它们,但他们说它们应该是随机字符串和唯一的 在中,关于客户端标识符: 授权服务器

我正在实现一个OAuth2提供商,我希望在我的网站中有一个开发人员登录和注册第三方应用程序的区域。但我对如何生成应用程序的客户端标识符和客户端密码有疑问。它们应该是唯一的随机代码,还是必须向客户提供一些有意义的信息?我想它们可能是随机的

我一直在寻找如何做到这一点的最佳实践,但还没有找到那么多。因此,任何答案都将不胜感激


PD:我在.NET MVC3上开发了一个名为DotNetOpenAuth的库。

规范不清楚如何生成它们,但他们说它们应该是随机字符串和唯一的

在中,关于客户端标识符:

授权服务器向注册的客户机颁发一个客户端 标识符-表示注册的唯一字符串 客户提供的信息


客户端标识符可以是您想要的任何内容。它可以是他们的选择,也可以是任何随机字符串

客户机机密应该是加密强随机字符串。以下是如何生成一个:

RandomNumberGenerator cryptoRandomDataGenerator = new RNGCryptoServiceProvider();
byte[] buffer = new byte[length];
cryptoRandomDataGenerator.GetBytes(buffer);
string uniq = Convert.ToBase64String(buffer);
return uniq;

不,但客户机密不一定是唯一的。只需输入客户端id。此外,鉴于上述代码样本(例如32+)中有足够长的
长度
,从统计学上讲,生成两个相同的代码是不可能的。您建议如何处理该秘密?@davidbitton我建议将该秘密设置为“超级秘密”,这样就没有人能猜到它了-Sphere是PowerShell唯一的版本是的,但是规范不在乎它们是否“随机”。