RestSharp HttpBasicAuthentication - example

后端 未结 5 1502
梦毁少年i
梦毁少年i 2021-01-03 20:51

I have a WPF client using RestSharp and WEB API Service. I try to use HttpBasicAuthenticator as follows:

RestRequest login = new RestRequest(\"/         


        
5条回答
  •  难免孤独
    2021-01-03 21:41

    Alternative answer your first question about retrieval of Auth Header values (Server Side) from How can I retrieve Basic Authentication credentials from the header?:

    private UserLogin GetUserLoginCredentials()
    {
        HttpContext httpContext = HttpContext.Current;
        UserLogin userLogin;
        string authHeader = httpContext.Request.Headers["Authorization"];
    
        if (authHeader != null && authHeader.StartsWith("Basic"))
        {
            string encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();
            Encoding encoding = Encoding.GetEncoding("iso-8859-1");
            string usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));
            int seperatorIndex = usernamePassword.IndexOf(':');
    
            userLogin = new UserLogin()
            {
                Username = usernamePassword.Substring(0, seperatorIndex),
                Password = usernamePassword.Substring(seperatorIndex + 1)
            };
        }
        else
        {
            //Handle what happens if that isn't the case
            throw new Exception("The authorization header is either empty or isn't Basic.");
        }
        return userLogin;
    }
    

    Usage of this method might be:

    UserLogin userLogin = GetUserLoginCredentials();
    

    Also have a look at: A-WebAPI-Basic-Authentication-Authorization-Filter

    Alternative answer on second question about returning the token (Server Side):

    var httpResponseMessage = Request.CreateResponse();
    
    TokenResponse tokenResponse;
    bool wasAbleToGetAccesToken = _identityServerHelper.TryGetAccessToken(userLogin.Username, userLogin.Password,
                platform, out tokenResponse);
    
    httpResponseMessage.StatusCode = wasAbleToGetAccesToken ? HttpStatusCode.OK : HttpStatusCode.Unauthorized;
    httpResponseMessage.Content = new StringContent(JsonConvert.SerializeObject(tokenResponse),
                System.Text.Encoding.UTF8, "application/json");
    
    return httpResponseMessage;
    

提交回复
热议问题