狠狠撸
Submit Search
础闯础齿の叠础厂滨颁认証検証结果
?
Download as PPTX, PDF
?
0 likes
?
1,077 views
S
Shintaro Mizunuma
Follow
クロスドメインでの非同期通信(补箩补虫)に叠础厂滨颁认証をかける时の设定方法の考虑や検証结果をまとめした。
Read less
Read more
1 of 10
Download now
Download to read offline
More Related Content
础闯础齿の叠础厂滨颁认証検証结果
1.
础闯础齿の叠础厂滨颁认証検証结果 2021/3/2
2.
■検証内容 ?非同期通信(ajax)のリクエスト先で以下の条件でBASIC認証が できるか、また設定の考慮点を検証する。 ?BASIC認証のユーザ名、パスワードはブラウザ標準のダイアログ で入力する。 ?サーバはnginx、クライアントはjqueryのajax関数を利用 ■条件 1. 画面リクエスト時のBASIC認証 2. 非同期通信(ajax)でのBASIC認証 2-1.
同一ドメインへの非同期通信 2-2. 別ドメインへの非同期通信(プリフライト無) 2-3. 別ドメインへの非同期通信(プリフライト有) 検証内容
3.
端末(Windows) nginx ブラウザ myhost.com 用意した検証環境 index.html index2.html BASIC認証2 BASIC認証1 myhost.com/index.html myhost2.com hosts 127.0.0.1 myhost.com 127.0.0.1 myhost2.com index2.html BASIC認証2 ajax呼び出し (同一ドメイン) ajax呼び出し (別ドメイン) ページリクエスト
4.
1. 画面リクエスト時のBASIC認証 端末(Windows) nginx ブラウザ myhost.com index.html index2.html BASIC認証2 BASIC認証1 myhost.com/index.html myhost2.com hosts 127.0.0.1 myhost.com 127.0.0.1
myhost2.com index2.html BASIC認証2 ajax呼び出し (同一ドメイン) ajax呼び出し (別ドメイン) ページリクエスト 検証範囲
5.
1. 画面リクエスト時のBASIC認証 ブラウザ nginx nginxの設定 auth_basic
"test"; auth_basic_user_file .htpasswd; (当然ですが)通常のBASIC認証設定で問題なく動作。フローは以下。 GET /index.html 401 Unauthorized WWW-Authenticate: Basic realm="test" GET /index.html Authorization: Basic XXXXX 200 OK
6.
2-1. 同一ドメインへの非同期通信 端末(Windows) nginx ブラウザ myhost.com index.html index2.html BASIC認証2 BASIC認証1 myhost.com/index.html myhost2.com hosts 127.0.0.1 myhost.com 127.0.0.1
myhost2.com index2.html BASIC認証2 ajax呼び出し (同一ドメイン) ajax呼び出し (別ドメイン) ページリクエスト 検証範囲
7.
2-1. 同一ドメインへの非同期通信 ブラウザ nginx nginxの設定 auth_basic
"test"; auth_basic_user_file .htpasswd2; 非同期通信時にブラウザの認証ダイアログが表示され問題なく動作。 フローは画面リクエストと同じ。 GET /index.html 401 Unauthorized WWW-Authenticate: Basic realm="test" GET /index.html Authorization: Basic XXXXX 200 OK
8.
2-2. 別ドメインへの非同期通信(プリフライト無) 2-2. 別ドメインへの非同期通信(プリフライト有) 端末(Windows) nginx ブラウザ myhost.com index.html index2.html BASIC認証2 BASIC認証1 myhost.com/index.html myhost2.com hosts 127.0.0.1
myhost.com 127.0.0.1 myhost2.com index2.html BASIC認証2 ajax呼び出し (同一ドメイン) ajax呼び出し (別ドメイン) ページリクエスト 検証範囲
9.
2-2. 別ドメインへの非同期通信(プリフライト無) ブラウザ nginx nginxの設定 add_header
'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET,OPTIONS,PUT,DELETE' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Headers' 'Authorization,User-Agent,Keep-Alive,Content-Type,accept,origin' always; auth_basic "test"; auth_basic_user_file .htpasswd2; 別ドメインへの非同期通信時はCORS用のレスポンスヘッダ設定が必要。また、ajax送信側でもxhr のwithCredentials設定が必要。 フローは同一ドメインへの非同期通信と同じ。 withCredentialsをtrueに xhrのwithCredentialsをtrueにしないと、クロス サイトのBASIC認証が許可されないため、認証 ダイアログが表示されない nginxのadd_headerは401レスポンスでは機能し ない。 ?alwaysオプションをつけることで、401でもヘ ッダがつくようになる。 GET /index.html 401 Unauthorized WWW-Authenticate: Basic realm="test" Access-Control-Allow-Origin:* ... GET /index.html Authorization: Basic XXXXX 200 OK
10.
2-2. 別ドメインへの非同期通信(プリフライト有) ブラウザ nginx GET
/index.html 401 Unauthorized WWW-Authenticate: Basic realm="test" Access-Control-Allow-Origin:https://myhost.com ... GET /index.html Authorization: Basic XXXXX 200 OK 別ドメインへの非同期通信時はCORS用のレスポンスヘッダ設定が必要。また、ajax送信側でもxhr のwithCredentials設定が必要。 フローは同一ドメインへの非同期通信と同じ。 withCredentialsをtrueに xhrのwithCredentialsをtrueにしないと、クロス サイトのBASIC認証が許可されないため、認証 ダイアログが表示されない nginxの設定 add_header 'Access-Control-Allow-Origin' 'https://myhost.com' always; add_header 'Access-Control-Allow-Methods' 'GET,OPTIONS,PUT,DELETE' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Headers' 'Authorization,User-Agent,Keep-Alive,Content-Type,accept,origin' always; auth_basic "test"; auth_basic_user_file .htpasswd2; OPTION /index.html 200 OK Access-Control-Allow-Origin:* ... プリフライト有の場合、Access-Control-Allow- Origin ‘*’指定はエラーとなるため、ドメインを 明示的に指定する必要がある。
Download