Link REST API Authentication Example

Example of C# code how to authenticate using a webclient.

 

the oAuth2Url is <Hostname>/identity/connect/token

and what you get back are the follow values:

access_token: the access token required for calling the api

expires_in: how long the token last.

token_type: type is bearer

refresh_token: token used to reauthenticate, will be shown later.

 

string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(_ClientId + ":" + _ClientSecret)); string urlEncodeScope = HttpUtility.UrlEncode(_ApiScope); string body = "grant_type=password&username=" + _UserName + "&password=" + _Password + "&scope=" + urlEncodeScope; WebClient wbclient = new WebClient(); wbclient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); wbclient.Headers.Add("Authorization", "Basic " + credentials); wbclient.Headers.Add("Cache-Control", "no-cache"); var wbresponse = wbclient.UploadString(oAuth2Url, body); dynamic obj = JsonConvert.DeserializeObject<dynamic>(wbresponse); _Token = obj.access_token; _ExpireTime = obj.expires_in; _TokenType = obj.token_type; _RefreshToken = obj.refresh_token; this._TokenRefreshTime = DateTime.UtcNow.AddMinutes((_ExpireTime));

 

 

If your token expires, you need to reauthenticate using the refresh token, the main difference is in the grant type is now reresh_token, so you dont have to send username and password multiple times

 

string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(_ClientId + ":" + _ClientSecret)); string body = "grant_type=refresh_token&refresh_token=" + _RefreshToken + "&client_id=" + _ClientId + "&client_secret=" + _ClientSecret; WebClient wbclient = new WebClient(); wbclient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); wbclient.Headers.Add("Authorization", "Basic " + credentials); wbclient.Headers.Add("Cache-Control", "no-cache"); var wbresponse = wbclient.UploadString(oAuth2Url, body); dynamic obj = JsonConvert.DeserializeObject<dynamic>(wbresponse); _Token = obj.access_token; _ExpireTime = obj.expires_in; _TokenType = obj.token_type; _RefreshToken = obj.refresh_token; this._TokenRefreshTime = DateTime.UtcNow.AddMinutes((_ExpireTime));

The information on this page is based on Link 2.12