RESTful Web サービスでログインを実装するにはどうすればよいですか?
質問
私は、サービス層を持つWebアプリケーションを構築しています。 サービス層は、RESTful デザインを使用して構築される予定です。 将来、Web アプリケーションと同じサービス レイヤーを使用する他のアプリケーション (iPhone、Android など) を構築することを想定しています。 私の質問はこれです - ログインをどのように実装すればいいのでしょうか? 私は、より伝統的な動詞ベースの設計からリソースベースの設計に移行するのに苦労していると思います。 もし私がSOAPでこれを構築していたなら、おそらくLoginと呼ばれるメソッドを持つことになるでしょう。 RESTでは、私はリソースを持っているはずです。 ログインのためのURIをどのように構築すべきか、理解するのに苦労しています。 このようなものであるべきです。
http://myservice/ {ユーザー名}?p={パスワード}を入力してください。
EDIT: フロントエンドのWebアプリケーションは、認証に従来のASP.NETフレームワークを使用しています。 しかし、認証プロセスのある時点で、提供された認証情報を検証する必要があります。伝統的なWebアプリケーションでは、私はデータベース検索を行うでしょう。しかし、このシナリオでは、データベースの検索を行う代わりに、サービスを呼び出すことになります。 そのため、提供された認証情報を検証するためのサービスが必要です。 そして、提供された認証情報を検証することに加えて、おそらく、認証に成功した後のユーザーに関する何らかの情報(フルネーム、IDなど)も必要でしょう。 これで質問がより明確になることを願っています。
それとも、私はこのことについて正しい方法で考えていないのでしょうか? 私の質問を正しく説明するのが難しいように感じます。
コリー
どのように解決するのですか?
S.Lottがすでに指摘したように、ここでは2つのことが折り重なっています。ログインと認証
認証については、広く議論され、共通の合意が得られているため、ここでは対象外としています。しかし、RESTfulなWebサービスに対してクライアントが自分自身をうまく認証するために、実際には何が必要なのでしょうか?そうです、ある種のトークン、これをアクセストークンと呼びましょう。
クライアント) 必要なのはアクセストークンだけですが、それをRESTfulに取得するにはどうすればいいのでしょうか?
サーバー) 単純に作成すればいいのでは?
クライアント)どうして?
サーバー) 私にとってアクセストークンはリソースに他なりません。したがって、私はあなたのユーザー名とパスワードと引き換えに、あなたのために1つを作成します。
したがって、サーバーはユーザー名とパスワードを POST するためのリソース URL "/accesstokens" を提供し、新しく作成されたリソースへのリンク "/accesstokens/{accesstoken}" を返すことができます。 あるいは、アクセストークンとリソースのリンクを持つhrefを含むドキュメントを返します。
<access-token id="{access token id goes here; e.g. GUID}" href="/accesstokens/{id}" />
おそらく、実際にはアクセストークンをサブリソースとして作成しないので、レスポンスにその href を含めないでしょう。
しかし、そうすると、クライアントはそのリンクを代理で生成することができるかどうか?しません。
真にRESTfulなWebサービスは、クライアントがいかなるリソースリンクも生成する必要なく、自らナビゲートできる方法でリソースを一緒にリンクすることを忘れないでください。
最後の質問は、ユーザー名とパスワードをHTMLフォームとしてPOSTすべきか、XMLやJSONなどのドキュメントとしてPOSTすべきか、ということです。)
関連
-
[解決済み] Outlook.comでは、Webhook/push通知のサポートはありますか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み] JAX-RSとJerseyでRESTトークンベースの認証を実装する方法
-
[解決済み】RESTful 認証
-
[解決済み] RESTfulログインの失敗。401またはカスタムレスポンスを返す
-
[解決済み] RESTful Web サービス - 他のサービスからのリクエストを認証する方法とは?
-
WSDL は,Web サービスの SOAP バージョン (1.1 または 1.2) を示すことができるか。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [【解決済み】tempuri.orgとは何ですか?
-
[解決済み] RESTとRPCのWebサービスの違い
-
[解決済み] REST APIのエラーリターンに関するグッドプラクティス【終了しました
-
[解決済み】RESTful 認証
-
[解決済み] Delphi XE用SOAPサーバー&クライアントアプリケーションVCL+Indyデモ?
-
[解決済み] Web APIとWebサービスの違いは何ですか?
-
[解決済み] RESTfulサービスにおける非CRUD操作
-
[解決済み] JAX-RSとJAX-WSの違いは何ですか?
-
[解決済み] GoのWebサーバーの前にNginxを使うメリットは何ですか?
-
[解決済み] リモートプロシージャコールとWebサービスの違いは何ですか?