私はOauth2について多くを読みましたが、それでも理解できません。このプロトコルを理解する方法を説明します。
Oauthプロトコルインタラクションにはいくつかのメインキャラクターがあります。
ユーザー、アプリケーション、リソースプロバイダー、認証サーバー。
メインフローを理解するにはどうすればよいですか。
モバイルクライアントを作成しているので、例として使用します。
最初にユーザーはアプリをインストールします。最初にユーザーがこのアプリを実行して保護されたリソースにアクセスするときよりも、ユーザーはパスワードを入力して、リソースサーバーの認証情報ではなく認証サーバーに直接ログインする必要があります。たとえば、私はオンラインストアアプリを持っています。ユーザーはFacebookアカウントを介してログインすることを許可されているため、ユーザーがサイトからリソースにアクセスする必要がある場合、最初のステップはFacebookアカウントで承認します。ログインとパスワードを入力し、認証情報が正しい場合は、Facebookサーバーがユーザーまたはアプリにアクセストークンを提供します。
アクセストークンを取得したら、それをデバイスの安全な場所またはローカルデータベースに保存します(Androidの場合はSQLiteです)。
正常にサインインすると、Oauthサーバーはリソースプロバイダーサーバー(私のオンラインストア)のウィットトークンにリダイレクトし、リソースサーバーはこのトークンをユーザーID /と共にデータベースに保存しますログイン名です。これで、リソースサーバーは、そのようなIDを持つユーザーがこのトークンで保護されたリソースにアクセスできることを認識しました。
クライアント側(Androidアプリ)でこのトークンを取得すると、有効期限が切れます。安全なリソースにアクセスする必要がある場合は、このトークンをPOST/PUTまたはHTTPSプロトコル経由のリクエストで渡します。これは、別の人がこのトークンを取得した場合、それを使用してプライベートにアクセスし、変更を加えることができるためです。
たとえば、注文する必要がある場合、モバイルクライアントからRESTトークンを添付したリクエストを行うと、リソースサーバーはこのトークンをチェックし、データベースと同じである場合、アクセスを許可されます。保護されたリソースを変更します。
Oauthプロトコルが正しくわかりませんか?
今私の質問
ネイティブクライアントがあり、ユーザーがソーシャルネットワークアカウントやネットワーク内の他のOauth2サーバーを使用してログインできない場合、Webページでのログインのみを許可しますか?パスワードとログイン。この場合、Oauth2はこの場合適用できませんか?はいの場合、次の質問。
代わりに何を使うべきですか?資格情報をリソースサーバーに1回だけ送信する必要があります。資格情報をチェックし、問題がなければトークンを生成し、トークンをデータベースに入れて、アプリに成功の応答を返します。たとえば、POSTメソッドを使用してhttps接続を介してパスワードを送信し、初めてログインします。リソースサーバーは、Oauth flowと同じトークンを発行します。
発行されたトークンをどのように保護できますか?しばらくしてからユーザーにログイン名とパスワードを再入力させますか?
これを手に入れるのを手伝ってください。どんな助けにも感謝します。
あなたの質問に:
- [...]ソーシャルネットワークアカウントやネットワーク内の他のOauth2サーバーを使用してログインする機能がありません[...]。
your所有者OAuth承認サーバーが必要ですyourリソースサーバーを管理します。OAuth Google、Facebook、Twitterなどのサーバーは役に立ちません。私の知る限り、メール、写真、投稿などの独自のリソースへのアクセスのみを許可できるためです。
例は次のとおりです。
あなたはプロトコルの流れを理解していると思いますが、おそらくAuthentication(verify ones identity)とAuthorization(grant access to resources)を混同していると思います。
OAuth v2.0はauthorizationプロトコルであり、リソースへのアクセスを管理します。他のサービス(これはアプリである可能性があります)がリソースサーバーデータにアクセスできるようにします。