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も併用してご利用いただけます。
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.