C#学习教程:如何生成OAuth 2客户端ID和密钥分享


如何生成OAuth 2客户端ID和密钥

我想使用.NET生成客户端ID和客户端密钥。 我阅读了OAuth 2规范,例如,那里没有指定客户端密钥的大小。 使用.NET框架生成客户端ID和客户端密钥是否有良好的做法?

正如OAuth 2.0授权框架的第2.2节所述 :

授权服务器向注册客户端发出客户端标识符 – 表示客户端提供的注册信息的唯一字符串 。 客户端标识符不是秘密; 它暴露给资源所有者,不得单独用于客户端身份validation。 客户端标识符对于授权服务器是唯一的。

此规范未定义客户端标识符字符串大小。 客户端应避免对标识符大小进行假设。 授权服务器应该记录它发出的任何标识符的大小。

因此,您可以自己定义客户端标识符。 这取决于你的选择。 您可以使用System.Guid简单地生成一个,或者使用uid + systemTime,也可以对其进行哈希处理,加密或者您想要的任何其他内容。

但客户端秘密应该是加密强大的随机字符串。 你可以这样生成一个:

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

您也可以使用加密哈希函数()来哈希UUID + SystemTime + somthingelse来自己实现它。

如果您想了解更多实践,可以从这里参考一些开放实现。

附录A.1和A.2在其ABNF语法中将client_idclient_secret的格式定义为*VSCHAR ,其中VSCHAR定义为

 VSCHAR = %x20-7E 

表示可打印的ASCII字符集。 如@Owen Tsao所述,规范未指定client_id的长度。 这意味着虽然您可以选择随机字节序列并在base64中对它们进行编码,但base64中出现的字符集仅表示可在此应用程序中使用的字符集的严格子集。

以下是在PowerShell中生成ClientSecret密钥的代码

 $bytes = New-Object Byte[] 32 $rand = [System.Security.Cryptography.RandomNumberGenerator]::Create() $rand.GetBytes($bytes) $rand.Dispose() $newClientSecret = [System.Convert]::ToBase64String($bytes) $newClientSecret 

我在这里找到了https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/replace-an-expiring-client-secret-in-a-sharepoint-add-in#generate-一个全新的秘密

上述就是C#学习教程:如何生成OAuth 2客户端ID和密钥分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959810.html

发表评论

邮箱地址不会被公开。 必填项已用*标注