首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成OAuth 2客户端Id和密码

如何生成OAuth 2客户端Id和密码
EN

Stack Overflow用户
提问于 2014-05-14 18:33:50
回答 3查看 43.2K关注 0票数 26

我想使用.NET生成客户端id和客户端密钥。我阅读了OAuth 2规范,例如,客户端密钥的大小没有在其中指定。是否有使用.NET框架生成客户端id和客户端密钥的良好实践?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-15 15:36:08

正如OAuth 2.0授权框架的section 2.2所说:

授权服务器向已注册的客户机发出客户机标识符-- ,一个表示客户机提供的注册信息的唯一字符串。客户端标识符不是秘密;它向资源所有者公开,并且不能单独用于客户端身份验证。客户端标识符对于授权服务器是唯一的。本规范未定义客户端标识符字符串的大小。客户端应该避免对标识符大小做出假设。授权服务器应该记录它发出的任何标识符的大小。

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

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

代码语言:javascript
复制
RandomNumberGenerator cryptoRandomDataGenerator = new RNGCryptoServiceProvider();
byte[] buffer = new byte[length];
cryptoRandomDataGenerator.GetBytes(buffer);
string uniq = Convert.ToBase64String(buffer);
return uniq;

您还可以使用加密散列函数()来散列UUID+SystemTime+somthingelse,以便自己实现它。

如果您想了解更多实践,可以参考some open implementations from here.

票数 31
EN

Stack Overflow用户

发布于 2017-11-20 10:39:04

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

代码语言:javascript
复制
$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-a-new-secret

票数 6
EN

Stack Overflow用户

发布于 2014-09-19 12:33:12

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

代码语言:javascript
复制
VSCHAR     = %x20-7E

表示可打印的ASCII字符集。规范中未指定client_id的长度,如@Owen Tsao中的noted。这意味着,尽管您可以选择一个随机的字节序列并在base64中对它们进行编码,但base64中显示的字符集只表示此应用程序中可用字符集的严格子集。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23652166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档