예제 #1
0
        public static async Task SignOut(OAuth20AuthenticationConfig authConfig, OAuth20AuthResponse authResponse)
        {
            HttpRequestMessage revocationRequest = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(authConfig.HttpRequestConfig.RevocationUrl)
            };

            var formKeyValuePairs = OAuth20FormUrlEncodedFactory.CreateUsingRevocation(authConfig, authResponse);

            revocationRequest.Content = new FormUrlEncodedContent(formKeyValuePairs);

            AddDefaultHeaders(revocationRequest);

            var httpClient         = GetHttpClient();
            var revocationResponse = await httpClient.SendAsync(revocationRequest);

            var authResponseContent = await revocationResponse.Content.ReadAsStringAsync();

            if (revocationResponse.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception($"{AutomatonConstants.OAuth20.OAUTH_20} failed to authenticate. Trying to access resource: {revocationRequest.RequestUri}, HttpStatusCode: {revocationResponse.StatusCode}, Reason: {authResponseContent}, Configuration: {JsonConvert.SerializeObject(authConfig)}");
            }
        }
예제 #2
0
        private static HttpContent CreateFormUrlEncodedContent(OAuth20AuthenticationConfig oAuthConfig)
        {
            var formKeyValuePairs = OAuth20FormUrlEncodedFactory.CreateUsingGrantType(oAuthConfig.Grant);

            return(new FormUrlEncodedContent(formKeyValuePairs));
        }