Habrによる承認

Habrがサードパーティサービスのユーザーを許可できるようにしたいと思います。



なんで?



第一に、habrayuzersは追加の認証サービスを受け取りますが、逆にこれにより悪化することはありません-追加の選択の自由。



次に、一部のhabrayuzersは、対象ユーザーがHabrであるサービスを設計します。たとえば、 habreffect.ruをホストする有名なイメージ、あらゆる種類のカルマおよび評価モニターなどです。 そのようなサービスに対してhabraauthorizationが発生することは言うまでもありません。



第三に、このような承認では、開発者は、たとえばカルマ<-100のユーザーを防ぐために制限を加えることができます。



どうやって?



以下に説明するスキームは非常にありふれたもので、少なくとも一度サイトをLoginzaなどのサービスと統合した人なら誰でも知っています。



1)サードパーティのサイトが特別なHabr API URLのリクエストを送信し、サイトの所有者所有者のログイン(公開キー)、リダイレクトURL、およびHabrauserのパスワード(秘密キー)に基づいて生成された署名を渡します。 したがって、そのようなリクエストは、Habrauserのユーザー名とパスワードを知っている人にのみ送信できます。



2)トークンが返されます。 寿命が短く(5〜10分)、1回使用できます。 トークンに基づいて、許可のリンクが形成されます。



3)訪問者は、Habrの特別ページへのリンクをたどり、そこでユーザー名とパスワードを入力します。その後、トークンが初期化されたときに指定されたアドレスにリダイレクトされます。 同時に、上記の方法で取得した訪問者のhabraloginと署名(アプリケーション所有者のパスワードによって署名された)がクエリ行でサイトに送信されます。 署名が正しい場合、リクエストは正しく、ログインに基づいて訪問者を承認できます。 すぐに、カルマと新しく作成されたユーザーの評価を要求し、いくつかの条件を満たすことができます。



Habrによる認証が必要ですか?



UPD



Habréに登録されているため、公開キー(ログイン)と秘密キー(パスワード)が自動的にあります。 それぞれがigrishaevとpass123であるとします。 今、私はHabrを通して私のサービスへの入り口を作りたいです。 手順は次のとおりです。



1) habrahabr.ru/api/auth/get_tokenにリクエストを送信し、パラメーターを渡します:

ログイン= igrishaev、

url = http://mysite.ru/habra_auth

署名= md5(ログイン+ url + md5( "pass123"))



2)応答として、「334-dfas9fdas30sdf」などのトークンを取得します。 habrでの承認のリンクは、habrahabr.ru / api / auth?token = 334-dfas9fdas30sdfになります



3)このリンクをクリックして、sumkinの訪問者はユーザー名とパスワードを入力します。 彼はHabrページでそれらを入力することに注意してください。



4)Habrは、クエリ文字列パラメーターのリンクmysite.ru/habra_authで、ユーザーsumkinを私のサイトにリダイレクトします。

ログイン= sumkin

名前=ヒョードル

姓= Sumkin

署名= md5(ログイン+ md5( "pass123"))



5)署名の有効性を確認し(パスワードで署名されています)、すべてが正常に行われている場合、ユーザーをsumkinとして認証します。

それだけです



All Articles