Syntheticを使ってWebサイトのテストを行う場合、アクセス先のサイトにBasic認証を要する場合があります。
Basic認証の認証情報はURLにいれることができるので、ドキュメントでは、「https://username:password@site.com」のようにURLに認証情報をいれる方法が紹介されています。
Syntheticテストで最初にアクセスするページからBasic認証が必要な場合は、上記で特に問題ないのですが、途中から必要とする場合が少し面倒です。
この途中から行われる場合に、より容易に対応する方法を2つ紹介します。
なお、今回スクリプトの実証には、こちらのサイトを利用します。サイトのトップページアクセスへは認証情報は必要ありませんが、「Basic HTTP/NTLM Authentication」のタイルにある、「HTTP/NTLM Auth」のリンクをクリックすると、Basic認証が必要なページにアクセスするようになっています。
方法1:Authenticationヘッダーを利用する方法
Basic認証ではAuthenticationヘッダーで認証情報を渡すこともできます。例えば、認証情報が、ユーザ名:user、パスワード:passの場合、「user:pass」の文字列を base64エンコードした値「dXNlcjpwYXNzCg==」を利用し、以下のように追加することでヘッダーに付与することで対応ができます。
スクリプト全体としては、以下のようになります。
「HTTP/NTLM Auth」のリンクをクリックした先のページではBasic認証が必要ですが、上記ヘッダの追加のみで、Basic認証が通り、テストが成功することが確認いただけます。
方法2:Chromeのキャッシュを利用する方法
SyntheticのScripted browserは、ChromeのRuntimeが動作しています。また、Chromeでは、Basic認証の認証情報がキャッシュされ、2回目以降はそのキャッシュが利用されることを活用します。
では、実際のスクリプトを見てみましょう。
スクリプトは非常に簡単で、以下のようになっています。
- Basic認証が必要なページへ直接アクセスして、認証情報を記憶させる
- 本来テストしたい最初のページ(https://authenticationtest.com)へアクセスする
- 認証が必要なページへのリンクをクリックし、表示されたコンテンツを確認し、h1要素に「HTTP/NTLM Auth」の文字列が表示されているか、assertで確認する
こちら実際にScripted browserにて実行していただくと、リンククリック時のURLに認証情報を記載していなくても、テストが無事に成功することがご確認いただけます。
まとめ
どちらの方法も非常に簡単に対応できることがわかっていただけたと思います。
1つ目の方法に関しては、ヘッダーへ追加のみ、2つ目の方法に関しては、事前に認証が必要なページへアクセスすることで、その後の認証を省略することができました。お客様のポリシーや好みに応じていずれかの方法にてご対応いただくことができます。
なお、Scripted browserのテストは、テストの実行ごとにRuntimeのインスタンスが新規に生成されるため、各テストはキャッシュがクリアされた状態で行われます。
また、パスワード情報をスクリプトに直書きしたくない場合は、Secure credentialsも併用してご利用いただけます。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.