2012-01-20 14 views
8

Wprowadzam dostawcę OAuth2 i chciałbym mieć gdzieś w mojej witrynie internetowej, gdzie programiści logują się i rejestrują aplikacje innych firm. Ale mam wątpliwości, w jaki sposób wygenerować identyfikator klienta aplikacji i sekret klienta. Czy powinny być unikatowymi przypadkowymi kodami, czy też muszą mieć jakieś istotne informacje dla klienta? Sądzę, że mogą być losowe.jak wygenerować identyfikator klienta OAuth i sekret klienta?

Cóż, szukałem najlepszych praktyk, jak to zrobić, ale nie znalazłem tak wiele. Więc wszelkie odpowiedzi zostaną docenione.

PD: Pracuję nad .NET MVC3 z biblioteką o nazwie DotNetOpenAuth.

Odpowiedz

15

Identyfikator klienta może być dowolny. Może to być ich wybór lub dowolny losowy ciąg.

Tajemnica klienta powinna być silnym kryptograficznie ciągiem losowym. Oto, jak możesz je wygenerować:

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

ale czy ten kod gwarantuje, że ciąg znaków będzie unikalny ??? – Daniel

+0

Nie. Ale sekret klienta nie musi być unikalny. Musi być tylko identyfikator klienta. Ponadto, biorąc pod uwagę wystarczająco długą "długość" w powyższym przykładzie kodu (powiedzmy, 32+), statystycznie * bardzo * nieprawdopodobne, że zostaną wygenerowane dwa identyczne kody. –

+0

Co polecasz do sekretu? – davidbitton

2

Specyfikacje nie określają, w jaki sposób należy je generować, ale mówią, że powinny to być ciągi losowe i niepowtarzalne.

W section #2.2, o identyfikator klienta:

Serwer autoryzacji wystawia zarejestrowany klient klient identyfikator - unikalny ciąg znaków reprezentujący rejestracyjny informacji dostarczonych przez klienta.

+0

Unikalne tak, ale specyfikacje nie obchodzi, czy są "losowe". –

Powiązane problemy