OAUTH 2.0は、産業用グレードのライセンス契約です。 OAUTH 2.0は、2006年に作成されたOAUTH 1.0から継承されています。OAUTH2.0は、開発者が承認を簡素化し、Webアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、および組み込みアプリケーションに特定の承認プロセスを提供するのを支援することに取り組んでいます。
OAUTH 2.0は、承認のための業界標準プロトコルです。 OAUTH 2.0は、2006年に作成された元のOAUTHプロトコルで行われた作業に優先します。OAUTH2.0は、クライアント開発者のシンプルさに焦点を当て、Webアプリケーション、デスクトップアプリケーション、携帯電話、リビングルームデバイスに特定の承認フローを提供します。
OAuth 2.0の4文字
理解しやすくするには、一般的に使用されるWeChatログインを例として取ります
リソース所有者
リソース所有者、WeChatに対応する各ユーザーがWeChatに設定した個人情報は、各ユーザーに属し、Tencentに属していません。
リソースサーバー
リソースサーバーは、一般に、ユーザーの基本情報を取得するためのWeChatのインターフェイスなど、ユーザーデータの一部の操作(追加、削除、変更、検索)のREST APIです。
クライアントアプリケーション
サードパーティのクライアントは、さまざまなWECHATパブリックアカウントによって開発されたアプリケーションと比較して、サードパーティアプリケーションは、認証サーバーによって許可された後、ユーザーアバター、性別、地域などの基本情報を取得するためにリソースサーバーのREST APIにアクセスできます。
承認サーバー
サーバーを認証して、サードパーティのクライアントが合法かどうかを確認します。合法的な場合は、クライアントにトークンを発行し、サードパーティはトークンを使用してリソースサーバーのAPIを呼び出します。
4つの承認方法(助成金タイプ)
anthorization_code
Webサーバーアプリケーションに適用可能な認証コードタイプ。モードは次のとおりです。クライアントは最初に呼び出し/OAUTH/Authorize/ユーザー認証インターフェイスを入力し、ユーザー認証後にコードを返し、クライアントはコードとAppSecretに従ってアクセストークンを取得します。
暗黙的にタイプを簡素化し、認証コードのタイプよりも認証コードを取得する手順が少なくなります。クライアントアプリケーションが承認された後、認証サーバーはクライアントのURLにアクセストークンを直接配置します。クライアントは、トークンを取得するためにURLを解析します。この方法は実際にはあまり安全ではなく、HTTPSセキュアチャネルを使用して、アクセストークンの有効性時間を短縮してリスクを減らすことができます。
パスワード
パスワードタイプ、クライアントアプリケーションは、ユーザー名とパスワードを介してトークンにアクセスします。ユーザーがユーザーのユーザー名とパスワードをクライアントアプリケーションに直接送信したいため、リソースサーバー、認証サーバー、クライアントには完全な信頼関係があります。クライアントアプリケーションは、ユーザーが送信したユーザー名とパスワードを介してトークンを取得し、リソースサーバーリソースにアクセスします。たとえば、Alipayは、同じ会社に属し、お互いを完全に信頼するため、Taobaoのユーザー名とパスワードで直接ログインできます。
client_credentials
クライアントタイプは、ユーザーの参加を必要とせず、異なるサービス間のドッキングに使用される方法です。たとえば、自分で開発するアプリケーションは、SMS検証コードサービスプロバイダーのサービスを呼び出し、マップサービスプロバイダーのサービスに電話し、携帯電話メッセージプッシュサービスプロバイダーのサービスを呼び出す必要があります。サービスを呼び出す必要がある場合は、サービスプロバイダーから与えられたアプリIDとAppSecretを直接使用してトークンを取得できます。トークンを取得した後、サービスに直接電話することができます。
その他の概念
成し遂げる
リソースサーバーと認証サーバーが2つの異なるアプリケーションである場合があります。リソースサーバーと認証サーバーが同じアプリケーションにある場合があります。違いは、リソースサーバーがトークンの有効性を確認する必要があるかどうかです。前者はチェックする必要がありますが、後者は確認する必要があります。後者はここに実装されています。
アプリケーションセキュリティ構成
@configurationPublic class securityconfiguration extends websecurityconfigurerAdapter {@Override Protected void configure(httpsecurity http)スロー例外{http.formlogin()。 } @Override public void configure(websecurity web)スロー例外{super.configure(web); } @Override Protected void Configure(AuthenticationManagerBuilder auth)スロー{auth.inmemoryauthentication()。 } @bean @Override public AuthenticationManager AuthenticationManagerbean()Throws Exception {return super.authenticationmanagerbean(); }}認証サーバー構成
@enableauthorizationserver @configurationpublic class authorationserverconfiguration extends authorizationserserverconfigureradapter {@override public void configure(clientdetailsserviceconfigurer clients)throws expection {client.inmemory()。 .AuthorizedGrantTypes( "Authorization_code"、 "password"、 "inclicit"、 "client_credentials");} @Override public void configure(authorizationserversecurityconfigurer security)スロー{super.configure(security); } @Override public void configure(authorationserverendpointsconfigurer endpoints)スロー{endpoints.authenticationmanager(authenticationmanager); } @autowired @qualifier( "AuthenticationManagerbean")private AuthenticationManager AuthenticationManager;}リソースサーバーの構成
@enableglobalmethodsecurity(prepostenabled = true)@enableresourceserver@configurationpublic classerserverconfigurations extends estolashs resourceser erverconfigureradapter {@override public void configure(httpsecurity http)スロー例外.AntMatchers(httpmethod.get、 "/read/**").access("#oauth2.hasscope('read ')").AntMatchers(httpmethod.post/").access(" #oauth2.hasscope('write') "); }}リソースサーバーフィルター順序設定
Application.ymlでフィルターオーダーを3に設定する必要があります。特定の理由から、リンクを参照してください。
クッキーの競合を防ぎます
認証サーバーのCookieとクライアントとCookieの間のCookie間のエラーを回避するために、Cookie名を変更するか、ContextPathを設定するのが最善です。
テスト
PostmanはOAUTH 2.0認証方法を提供します。トークンを取得して、HTTPリクエストに認証を追加してから、リソースサーバーのREST APIをリクエストできます。
クライアント情報
許可
取得したトークン
リソースサーバーAPIへのアクセス
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。