2016-07-04 14 views
1

OAuthに基づいてwcfサービスを保護する必要があります。この場合、Javaアプリケーションは、私が.NET層のOauthに基づいて検証する必要があるトークンを渡しています。トークンが渡された場合は、wcfサービスを呼び出す必要があります。OAuthに基づいてwcf restサービスを保護する方法

OAuthに基づいていくつかの例を確認しましたが、これを達成するための考えはありませんでした。私はネットでOAuthに基づいてこれを達成する方法を手伝ってください。

答えて

1

最後に私がすることによって実装

var authHeader = WebOperationContext.Current.IncomingRequest.Headers.GetValues("Authorization"); 
       if (authHeader == null || authHeader.Length == 0) 
       { 
        throw new WebFaultException(HttpStatusCode.Unauthorized); 
       } 
       NameValueCollection outgoingQueryString = HttpUtility.ParseQueryString(String.Empty); 

       var parts = authHeader[0].Split(' '); 
       if (parts[0] == "Bearer") 
       { 
        string token = parts[1]; 

        outgoingQueryString.Add("token", token); 
        byte[] postdata = Encoding.ASCII.GetBytes(outgoingQueryString.ToString()); 

        var result = string.Empty; 
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(oauthConfiguration.Setting.CheckUrl); 
        httpWebRequest.ContentType = "application/x-www-form-urlencoded"; 
        httpWebRequest.Method = "POST"; 
        httpWebRequest.Headers.Add("Authorization", GetAuthorizationHeader(oauthConfiguration.Setting.ClientId, oauthConfiguration.Setting.ClientSecret)); 
        httpWebRequest.ContentLength = postdata.Length; 
        using (Stream postStream = httpWebRequest.GetRequestStream()) 
        { 
         postStream.Write(postdata, 0, postdata.Length); 
         postStream.Flush(); 
         postStream.Close(); 
        } 

        var response = (HttpWebResponse)httpWebRequest.GetResponse(); 
        var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
の下に、これを解決
関連する問題