itsource

OAuth 2 클라이언트 ID 및 비밀을 생성하는 방법

mycopycode 2023. 5. 17. 22:56
반응형

OAuth 2 클라이언트 ID 및 비밀을 생성하는 방법

.NET을 사용하여 클라이언트 ID와 클라이언트 비밀번호를 생성하고 싶습니다.저는 OAuth 2 사양을 읽었고, 예를 들어 클라이언트 비밀번호의 크기는 명시되어 있지 않습니다..NET 프레임워크를 사용하여 클라이언트 ID와 클라이언트 암호를 생성하는 좋은 방법이 있습니까?

OAuth 2.0 Auth 2.0 Authorization Framework의 섹션 2.2에 따르면 다음과 같습니다.

권한 부여 서버는 등록된 클라이언트에 클라이언트 식별자(클라이언트가 제공한 등록 정보를 나타내는 고유 문자열)를 발급합니다.클라이언트 식별자는 비밀이 아니며 리소스 소유자에게 노출되므로 클라이언트 인증에 단독으로 사용해서는 안 됩니다.클라이언트 식별자는 권한 부여 서버에 고유합니다.

이 규격에서는 클라이언트 식별자 문자열 크기가 정의되지 않은 상태로 남아 있습니다.클라이언트는 식별자 크기에 대한 가정을 하지 않아야 합니다.권한 부여 서버는 발급하는 식별자의 크기를 문서화해야 합니다.

따라서 직접 클라이언트 식별자를 정의할 수 있습니다.그것은 당신의 선택에 달려 있습니다.사용할 수 있습니다.System.Guid간단하게 하나를 생성하거나 uid + 시스템을 사용합니다.시간은 해시하거나 암호화하거나 원하는 모든 것을 사용할 수도 있습니다.

그러나 클라이언트 암호는 암호화된 강력한 무작위 문자열이어야 합니다.다음과 같은 항목을 생성할 수 있습니다.

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

또한 암호화 해시 함수()를 사용하여 UUID+SystemTime+기타를 해시하여 직접 구현할 수 있습니다.

더 많은 사례를 알고 싶다면 여기에서 가지 개방형 구현을 참조할 수 있습니다.

다음은 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://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/replace-an-expiring-client-secret-in-a-sharepoint-add-in#generate-a-new-secret 에서 찾았습니다.

부록 A.1과 A.2는 양쪽의 형식을 정의합니다.client_id그리고.client_secret그들의 ABNF 문법에서.*VSCHAR어디에VSCHAR로 정의됩니다.

VSCHAR     = %x20-7E

인쇄 가능한 ASCII 문자 집합을 의미합니다.의 길이client_id@Owen Tsao가 언급한 대로 사양에 의해 지정되지 않은 상태로 유지됩니다.즉, 임의의 바이트 시퀀스를 선택하여 base64에서 인코딩할 수 있지만 base64에 나타나는 문자 집합은 이 응용 프로그램에서 사용할 수 있는 문자 집합의 엄격한 하위 집합만 나타냅니다.

언급URL : https://stackoverflow.com/questions/23652166/how-to-generate-oauth-2-client-id-and-secret

반응형