1. ホーム
  2. cp

このリソースにアクセスするには完全な認証が必要です Unauthorized

2022-02-15 03:47:04

銀行アプリでユーザーとインターフェースする場合、他のインターフェースは、accesstokenへのアクセスを提供し、postを介して提出され、すべてoauthプロトコルに基づいています。

例えば、インターフェースアドレス: https://test_Id:[email protected]/oauth/authorize

インターフェースを再取得した後、結果を取得できるかどうかテストしなければならないので、オンラインポスト投稿リクエストを使ってデータ取得のシミュレーションを行ったところ、結果は成功したので、問題はないはずだと考え、開発・コード作成を行いました。

しかし、そのコードでデータを取得することはできず、401ステータス、Unauthorizedというエラーメッセージが返され続けました。このリソースにアクセスするには、完全な認証が必要です。

リクエストヘッダ、エンコード、json、フォーム送信など、どのように設定しても同じエラーになりますが、ブラウザ上ではシミュレーションが動きます。

エラーメッセージを返します。

{
"timestamp":1510558350024,"status":401,"error":"Unauthorized",
"message":"Full authentication is required to access this resource",
"path":"/oauth/authorize"
}

どうすれば直るの?

我々は最初の与えられた接続アドレスを見て、このURLは明らかに2つのマッチ(:@)、クエリを持って、それが実際にアカウントとパスワードのログインであることが判明し、我々はブラウザで動作し、ブラウザは自動的にデフォルトでログインを解決します、そのコードは、それを記述する方法?

解決策

                   var tokenRequestParams = new SortedDictionary<string, string>
                    {
                        {"type", "authorization"}
                    };
                    var content = new FormUrlEncodedContent(tokenRequestParams);
                    var handler = new HttpClientHandler
                    {
                        Credentials = new NetworkCredential("test_Id", "test_secret")//account, password
                    };
                    var httpClient = new HttpClient(handler);
                    var data = httpClient.PostAsync("https://test_Id:[email protected]/oauth/authorize", content);

NetworkCredentialです。ネットワークでクレデンシャルを提供し、そのクレデンシャルを取得したユーザーのみが適切なサービスパーミッションにアクセスできるようになりますが、ここがポイントになります。