web-dev-qa-db-ja.com

GETリクエストはブラウザーで機能しますが、Postmanを使用するとUnauthorizedになります

私はクローム経由でリクエストを発行しています:

[org]/api/data/v8.1/accounts?$select=name,accountid&$top=3

そして私は合理的な応答を受け取ります:

{
  "@odata.context":"[org]/api/data/v8.1/$metadata#accounts(name,accountid)","value":[
    {
      "@odata.etag":"W/\"769209\"","name":"Telco","accountid":"c6ed63e0-9664-e411-940d-00155d104b35"
    },{
      "@odata.etag":"W/\"752021\"","name":"Fourth Coffee","accountid":"d1eefc0a-3ebc-e611-80be-24be051ac8a1"
    },{
      "@odata.etag":"W/\"768036\"","name":"Fourth Coffee","accountid":"3cbb8d24-20bd-e611-80c0-24be051ac8a1"
    }
  ]
}

しかし、同じことをしようとすると[〜#〜] get [〜#〜] postmanを介して401 unauthorized!を取得します

ヘッダーなしで試してみましたが、基本的な認証:

Authorization:Basic Y2hybGFiXxxxxxxxxxxxxxcmQxMjM=

何が悪いのですか?郵便配達人からのGETを実行するためにCRM内で変更する必要があるものはありますか?

以下は、Chrome=が使用するヘッダーです(DevToolsから取得))。

  • 受け入れ:text/html、application/xhtml + xml、application/xml; q = 0.9、image/webp、/; q = 0.8
  • Accept-Encoding:gzip、deflate、sdch
  • Accept-Language:en-US、en; q = 0.8
  • 認証:TlRMTVNTUAADAAAAGAAYAIoAAABkAWQBogAAAAwADABYAAAADgAOAGQAAAAYABgAcgAAABAAEAAGAgAAFYKI4gYBsR0AAAAPai35LURprYMgYVSwMQXi/2MAaAByAGwAYQBiAGEAZwBvAHIAZABvAG4ASABPAFUALQBXAFMALQBBAEcATwBSAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd0avVN8acJQKvlSN8hYrSgEBAAAAAAAAoBg7uZi80gEIIthtN5clBAAAAAACAAYARABFAFYAAQAUAEIAQQBOAEMAUgBNADIAMAAxADYABAAcAGQAZQB2AC4AYwBoAHIAbABhAGIALgBpAG4AdAADADIAQgBBAE4AQwBSAE0AMgAwADEANgAuAGQAZQB2AC4AYwBoAHIAbABhAGIALgBpdddddddddddddddbABhAGIALgBpAG4AdAAHAAgAoBg7uZi80gEGAAQAAgAAAAgAMAAwAAAAAAAAAAEAAAAAIAAAccTLbO5YZuNnhdCDsjPCg1YXJuNv0XuASIhHrWWBg7kKABAAAAAAAAAAAAAAAAAAAAAAAAkAPABIAFQAVABQAC8AYgBhAG4AYwByAG0AMgAwADEANgAuAGQAZQB2AC4AYwBoAHIAbABhAGIALgBpAG4AdAAAAAAAAAAAAAAAAACtRrU1oDZ/XXRVVEUuj0yTネゴシエート
  • Cache-Control:max-age = 0
  • Cookie:ReqClientId = 42484e9a-f488-41a9-a016-1cd6e5820b3c
  • Host:myhost ....
  • プロキシ接続:キープアライブ
  • アップグレード-安全でないリクエスト:1
  • User-Agent:Mozilla/5.0(Linux; Android 6.0; Nexus 5 Build/MRA58N)AppleWebKit/537.36(KHTML、like Gecko)Chrome/57.0.2987.133 Mobile Safari/537.36

まず、CRMにログインし、タブをそのままにしておきます。

POSTManに入る

インターセプターを有効にします(画像を参照) interceptor

そのように、URLを入力してSENDをクリックします。 POSTManはそれ自体でCookieとヘッダーを処理し、結果が表示されます。

CRMからログアウトすると、POSTManは明らかに要求を発行できなくなり、代わりに401を返します。

6
Alex

呼び出しているサーバーにはRFC 4559( https://tools.ietf.org/html/rfc4559 )認証が必要なようです。詳細はこちら: https://en.wikipedia.org/wiki/SPNEGO

ブラウザからのGETリクエストの場合の動作:

  1. ブラウザが必要なページをリクエストする
  2. サーバーはHTTP 401(無許可)で応答し、応答ヘッダーWWW-Authenticate:Negotiateを提供します。これは、RFC 4559認証が必要であることをブラウザに伝えます。
  3. ブラウザーは、サイトがこのアクションの許可を持っていることを確認します(ここでの構成の詳細: https://ping.force.com/Support/PingFederate/Integrations/How-to-configure-supported-browsers-for-Kerberos -NTLM )。ほとんどのサイトは、明示的にホワイトリストに登録されていなければ、このような承認を要求することはできません。
  4. 許可されている場合、ブラウザはドメインのActive DirectoryにKerborosチケットを要求します。
  5. Active Directoryはチケットで応答します。
  6. ブラウザはティッカーをサーバーに転送します(表示されるAuthotizarion:Negotiate xxxxxヘッダーを介して)。
  7. サーバーは同じActive Directoryと対話し、そのチケットをユーザー名とグループ/権限情報に変換します。

サーバー(おそらく内部/イントラネットの会社のサイト)に対する要求を自動化しようとしている場合に、これを可能にする(ブラウザーをシミュレートする)ツールを知りません。あなたの最善の行動方針は、スクリプトを使用した(VBSなどの)フォームであり、COMを介してIEを使用し、この認証を処理する可能性があります(私はこれを行っていないので、そうかどうかわからない)確かに仕事)。

2
xpa1492

私は次の手順を使用しましたが、問題はありませんでした。以下の手順に従ってください:

  1. Google Chromeを開きます
  2. PostmanをインストールするExtention
  3. PostmanのInterceptor Extentionをインストールする
  4. Postmanを開くExtention
  5. Syncを使用
  6. Interceptorを使用
1
CodeSlave

ポストマンchrome拡張機能から、またはシステムにインストールされたポストマン(Windowsベース)アプリケーションを介してアクセスしようとしています。chrome拡張機能からデータをフェッチしてみてください。

1
kothari

これらは私を助けました。

  1. 郵便配達員とホストされているページの両方でNTLM認証であることを確認します。

  2. メソッドポストを使用する

  3. ユーザー名とパスワード(設定済みで、アクセスキーである必要はありません)

0
Priyanka Arora

これで私の問題は解決しました。 Postmanで、Authorizationタブからアクセストークンをコピーし、「No Auth」タイプを選択しました。次に、[Headers]タブに移動し、[Headers]セクションで、新しいキーに「Authorization」という名前を付け、値にTOKENプレフィックスをBearerで渡しました。 下のスクリーンショットを参照

0
Rajeshwar

あなたのURLを引用符で囲んでみてください:

curl '[org]/api/data/v8.1/accounts?$select=name,accountid&$top=3'

&、$、=などが問題を引き起こしている可能性があります-同じ問題があり、引用符を付けることが解決策でした

0
sami