[ANN] FreeRADIUS officially webscale
https://twitter.com/arr2036 twitter { oauth_consumer_key = '' oauth_consumer_secret = '' oauth_access_token = '' oauth_access_token_secret = '' api_uri = 'https://api.twitter.com/1.1/statuses/update.json' } server { ... authorize { # Stage 1.0 - Generating the signature # Stage 1.1 - What are we tweeting about? update request { Tmp-String-0 := "User %{User-Name} connected to %{NAS-Identifier} #WatchingYou #NoPrivacy #FreeRADIUS #Winning" } # Stage 1.2 - Generate the nonce (base64 encoding of 32 bytes of random data) update request { Tmp-Octets-0 := "0x%{randstr:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh}" Tmp-String-1 := "%{base64:&Tmp-Octets-0}" Tmp-Integer-0 := "%l" } # Stage 1.3 - Build the paramter string update request { Tmp-String-2 := "\ oauth_consumer_key=%{urlquote:${twitter.oauth_consumer_key}}&\ oauth_nonce=%{urlquote:%{Tmp-String-1}}&\ oauth_signature_method=HMAC-SHA1&\ oauth_timestamp=%{Tmp-Integer-0}&\ oauth_token=%{urlquote:${twitter.oauth_access_token}}&\ oauth_version=1.0&\ status=%{urlquote:%{Tmp-String-0}}" } # Stage 1.4 - Create the signature base string update request { Tmp-String-3 := "POST&%{urlquote:${twitter.api_uri}}&%{urlquote:%{Tmp-String-2}}" } # Stage 1.5 - Create the signing key update request { Tmp-String-4 := "%{urlquote:${twitter.oauth_consumer_secret}}&%{urlquote:${twitter.oauth_access_token_secret}}" } # Stage 1.6 - Create the oAuth signature update request { Tmp-Octets-1 := "0x%{hmacsha1:&Tmp-String-3 &Tmp-String-4}" } update request { Tmp-String-5 := "%{base64:&Tmp-Octets-1}" } # Stage 2.0 - Building the request # Stage 2.1 - Adding the authorization header update control { REST-HTTP-Header := "Connection: close" REST-HTTP-Header += "\ Authorization: OAuth \ oauth_consumer_key=\"%{urlquote:${twitter.oauth_consumer_key}}\", \ oauth_nonce=\"%{urlquote:%{Tmp-String-1}}\", \ oauth_signature=\"%{urlquote:%{Tmp-String-5}}\", \ oauth_signature_method=\"HMAC-SHA1\", \ oauth_timestamp=\"%{Tmp-Integer-0}\", \ oauth_token=\"%{urlquote:${twitter.oauth_access_token}}\", \ oauth_version=\"1.0\"" } # Stage 3.0 - Sending the request update request { Tmp-String-6 := "%{rest:POST ${twitter.api_uri} status=%{Tmp-String-0}}" } } } v3.0.x HEAD only. Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2
participants (1)
-
Arran Cudbard-Bell