• ベストアンサー

WebAPIの認証時のヘッダについて

現在web開発でapiを作っております。 よくクライアントシステムから認証apiを呼ぶことがあると思いますが、 この時認証に必要な情報をリクエストヘッダに設定するのはなぜでしょうか リクエストボディに入れてもいいのかなと思ってしまうのですが、 ヘッダの理由を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ヘッダーであれば、大抵のフレームワークでは辞書形式データなどにして、ヘッダー名からデータを取得できるようにしてくれてるので、扱いが楽になります。ボディ部にある場合は、データ形式によって自分で解析が必要になります。 また、API全体で認証情報の設定方法は統一されているべきなので、メソッドにGETを使うAPIがある場合は、ボディが使えないので必然的にヘッダーに設定することになります。

その他の回答 (1)

回答No.1

Bodyだと、それ用にプログラムが必要ですけど。 Headerの場合、「プロトコル」なので、楽でしょ。 Postmanとかでパラメタ捏造するときも、 決まったフォーマットがあるわけなので、 指示書も書きやすいですし。 逆に、Body側は、暗号化して見えないデータ通信でよく使いますね。 (あくまで、全部とは言えないので、こちらでの運用ケースでの話ですが) 確かに何がHeaderで何がBodyかって言われても生で見れば 末尾から"\n\n"以降がBodyなだけで、どっちもContentそのもの ってのも、その通りですけどね。

madosel15
質問者

お礼

確かにbodyだとひと手間かかってしまいますね。。 ご回答ありがとうございました

関連するQ&A

  • ping送信時のヘッダについて

    WEBサーバーへの 「ping送信」時と「WEBブラウザなどでの通常のページ読み込みの リクエスト」時とでは、送信ヘッダ情報や、その他サーバ側で アクセス解析出来るデータに違いがでますか? 出るとしたら、どのような部分が違うのでしょうか?

  • 「認証情報をヘッダに挿入したGETリクエストを送信

    表題のとおり「GETリクエストのヘッダにX-WSSE認証を追加して送出する」方法がわからず困っています。 なぜそれをやりたいかと申しますと ライブドアブログに投稿するのに、XML::Atomを使った方法はわかったのですが、 XML::Atomを使わないでやるにはどうしたらいいのかとおもい試しています。 http://www.witha.jp/Atom/Chapter-3_The_Atom_Publishing_Protocol_or_AtomAPI.html#Atom3-4-3 によりますと、 ---- エンドポイントのhttp://cms.blog.livedoor.com/atomに認証情報をヘッダに挿入したGETリクエストを送信します.  生のHTTP通信は以下のようになります. リクエスト: GET http://cms.blog.livedoor.com/atom HTTP/1.1 X-WSSE: UsernameToken Username="***", PasswordDigest="eNSBiuFfcLpau1RfWc3lOWufje0=", Nonce="ZGFrZHZueGJ6aGh1", Created="2004-10-31T14:08:34Z" --- と、あっさり書いてあるのですが、 ◆「認証情報をヘッダに挿入したGETリクエストを送信」◆はどうやれば良いのやら・・・ 強引にこうかいてみたのですが・・ -------- use LWP::UserAgent; $request = HTTP::Request->new(GET => 'http://cms.blog.livedoor.com/atom', ['X-WSSE'=>'User nameToken Username="*****", PasswordDigest="KxZ4DElJVqsIBXiF9ZIWCp59ghM", Nonce="YWFh", Created="2004-01-20T01:09:39Z"']); $ua = LWP::UserAgent->new; $response = $ua->request($request); print $response->content; ---------- 以下のように成ってしまいました。 ---------------- <?xml version="1.0" encoding="utf-8"?> <error>Invalid login</error> ---------------- どうかよろしくおねがいします。

    • ベストアンサー
    • Perl
  • HTTPリクエストヘッダーの設定と遷移

    1.HTTPリクエストヘッダーって、任意の項目名で値を設定する事ができるのでしょうか?   その場合、どのような設定方法(タグ?)になるのでしょうか。 2.HTTPリクエストヘッダーにある情報を設定し、   そして、そこから別のページに遷移しその別のページで、遷移前に設定していた   HTTPリクエストヘッダーの情報を読み込みたいのですが、実現可能でしょうか?   また可能な場合、例えば、Javascript、HTMLなんかを利用して可能でしょうか? 初歩的な事かも知れませんが、よく分からず困ってます。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • Ruby CGI HTTPヘッダ

    Rubyで、 CGIがクライアント(ブラウザ等)から受けたHttpリクエストヘッダとその値を全て取得して表示したいです。(どのようなヘッダが付与されても) 以下を例に教えてください。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<body>\n" #ここにどのように書いたら良いですか? puts "</body></html>\n"

  • HTTPリクエスト

    JSPのクライアントからサーブレットにHTTPリクエストを送信する部分について、質問させていただきたく思います。 [実現したいこと] ・クライアント側からのHTTPリクエストのヘッダの内容を、任意のものに書き換えてサーブレットに送信。 [環境] WEB APサーバー:Web Sphere Aprication Server HTTPヘッダを読み取って、ヘッダ内のクライアント情報を元にクライアント別の処理を振り分ける機能を作ったのですが、そこの機能をテストするのに上の機能を使いたいと思ってます。。。 皆様のお知恵を拝借できればと思います。 よろしくお願いいたします。

  • WebAPIのマッシュアップ方法について[Webサービスの作り方]

    マッシュアップというものをやりたいと思っています。 例えばAPIはYahooデベロッパー http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html のものを使うとして、 リクエストURL http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch にリクエストパラメータを付加すると(サンプルコードです) http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch? appid=YahooDemo&query=%e6%b2%96%e7%b8%84&results=2 とするとこうなるということですが、 質問(1)まずquery=%e6%b2%96%e7%b8%84 という検索クエリーというものがよく分かりません。どう決めればよいのでしょうか? 質問(2)データベースについての知識はないのですが、もし必要ならどのような知識がどんなところに必要でしょうか?(例で示して下さると助かります) 質問(3)そして、このアドレスにアクセスするとXML形式で結果が返ってきますよね。これをどう使っていくのかいまいちよく分かりません。解説サイトを探してみたりもしましたが、抽象的で過程を省いているものが多く (1:○○する、2:○○する・・・と細かく説明されていればいいのですが・・)質問するに至りました。 関係ありそうな技術の現時点での到達度を書いておきます。 PHP、Perlなど:一から javascript:少しかじりました html:一通りはできます xml:一から HTTP関係:GET命令などで必要な情報をサーバからクライアントに持ってくるなどの簡単な知識。実際のやり方は一から 足りない部分は必要に応じて覚えていきたいと思っています、まずは簡単なものを一つ作りながら・・・と。どうぞよろしくお願いいたします。

  • モジュールを使ってリクエストヘッダーの表示をさせたい

    宜しくお願いします。 ウェブサーバーにリクエストを送った際、 リクエストヘッダ レスポンスヘッダとあると思うんですけど、 レスポンスヘッダは下記の形で表示できるのですが、 リクエストの際のヘッダ情報(HOST:やReferer:など)を表示させる事ができません。 どなたか、モジュールを使った形でリクエストヘッダを表示させるプログラム記述をご教授願えませんでしょうか。 ※下記は実際にテストを行っているリクエストヘッダとレスポンスヘッダとソースを表示する記述例です。(レスポンスヘッダは正常に表示できているとおもうのですが・・。) #!/usr/bin/perl use HTTP::Request::Common qw(POST GET); use LWP::UserAgent; use HTTP::Cookies; my $ua = LWP::UserAgent->new; my $req = $ua->request(HTTP::Request->new(GET => "http://localhost/")); print "Content-type: text/html\n\n"; print $req3->headers_as_string([$endl]);#これを追加し表示される情報はリファレンスっぽくなってしまうのと、 #リクエストヘッダのHOST:やReferer:UserAgentなどの情報が入ってないので、 #モジュールを利用してリクエストヘッダを表示させてみたいです。 print $req->as_string; リクエストヘッダーのイメージは下記のような情報だと思うのですが、モジュールを使って表示させる事はできないでしょうか どなた様かご教授の程宜しくお願い致します。 HTTP/1.1 Accept: */* Referer: http://okwave.jp/search.php3 Accept-Language: ja User-Agent: Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) Host: okwave.jp Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=Shift_JIS

    • ベストアンサー
    • Perl
  • IISでのルーティング処理について

    現在IIS 7.5を使ってルーティング機能を実装しようと考えています。 具体的には、サーバ(1)に対してクライアントからのリクエストがあったら サーバ(1)の中でリクエストヘッダーを読んで認証のような機能を噛ませた上で リクエストヘッダーを書き換えた上でサーバ(2)へリダイレクトさせるというものです。 クライアントからはhttp://サーバ(1)/XXXXX というリクエストをし、 そのリクエストが http://サーバ(2)/XXXXX へ飛んで、その応答をクライアントが 受け取るというイメージです。 XXXXXの部分が固定だったらASP.NETで サクッと作れそうなんですけど。 サーバ(2)のサイト、画面、I/Fなどなど、 すべてサーバ(1)を介したいのです。 サーバ(1)へのリクエストをサーバ(2)に飛ばすだけなら Application Request RoutingをつかってURL書き換えを 設定してやればいけそうなのですが、 間に挟む処理をどうつくればいいのかわかりません。 出来ればC#.NETで作成したDLLが呼ばれるように 構成したいところなのですが、 どなたかご存知であればお知恵を貸してください。 よろしくお願いします。

  • Twitterでリクエストトークン取得時にエラー

    初歩的な質問で申し訳ありません。 色々と修正してみたのですが、どうしても分からなかったので質問させてください。 TwitterのAPIを利用してbotシステムを作っているのですが、 最初の認証画面のところで、リクエストトークンが取得できなくなってしまいました。 昨日までは正常に動いていたのを確認できていたんですが・・・ ********** 【ソース】 require_once '../twitteroauth-master/twitteroauth/twitteroauth.php'; $api_key = 'xxxxxx'; $api_secret = 'xxxxxxxxxx'; // TwitterOAuth認証を作成 $twitter = new TwitterOAuth($api_key, $api_secret); // トークン情報から認証URLを取得 $request_token = $twitter->getRequestToken('http://hoge.jp/callback.php'); $url = $twitter->getAuthorizeURL($request_token, true); // セッションにデータを保存 $_SESSION["token"] = $request_token["oauth_token"]; $_SESSION["token_secret"] = $request_token["oauth_token_secret"]; // 認証ページ表示 header("Location: $url"); ********** ちなみに、TwitterのAPI取得画面で、Callback URLは設定しています。 また、twitteroauth.phpのhttpファンクションの中でcurl_error($ci)を表示させると、 「Problem with the SSL CA cert (path? access rights?)」 というエラーメッセージが表示されました。 なぜいきなりエラーが起こるようになってしまったのか、何か不備があるのであれば教えていただけないでしょうか。 お知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Web上の認証方式について

    いつもお世話になっております。 Web上での認証方式に関してアドバイスをお願いします。 今回、比較的機密性の高い情報を取引先と共有したいと上司から相談を受けました。 機密性の高い情報であれば、イントラネットなどをうまく活用し、 基本的にWeb上にはアップロードしないというのが定石かと思われますが、 外出先でも手軽に確認したい、Web上から認証が行えて閲覧できれば顧客先も楽だし…などということで「Web上」ということにこだわっているようです。 MovableTypeなどのブログ系システムで情報を随時更新していき、そのブログにはWeb上からアクセス認証をし、 特定のメンバーしか入れないようにする。というものを考えているようです。 よくある会員・社員限定ページのようなものですね。 そこで、できるだけセキュアな認証方法は?と聞かれ、あまりアクセス認証などのシステムに明るくない私は途方に暮れております。 「ダイレクト認証+SSL」→「cgiによる認証(ベーシック認証+SSL)」と二段階に分けて認証してみてはどうかと考えましたが、 SSLを使用しても、これらの認証法はあまりセキュリティは高くないという意見を目にしたことがあるので不安です。 このような機密性の高い情報をネット上で扱う際に、有効な認証システムやサービスなどはありますでしょうか? またそれ以前に。やはりこのような機密性の高い情報はネット上で扱うものではないと進言すべきでしょうか? アドバイスよろしくお願い致します。