ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してパスワードで保護された Web サービスに対して認証するにはどうすればよいですか?

PHP を使用してパスワードで保護された Web サービスに対して認証するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 08:24:03438ブラウズ

How Can I Authenticate to a Password-Protected Web Service Using PHP?

パスワードで保護された Web サービスへの接続と認証の問題の解決

PHP 経由で WS セキュリティで保護された Web サービスにアクセスしようとすると、適切な認証を構成する際に問題が発生する可能性があります。このガイドは、これらの課題を解決するための包括的なソリューションを提供することを目的としています。

認証の問題のトラブルシューティング

  • スクリプトが事前の認証なしでリクエストを作成すると、おそらくWSDL 解析エラーで失敗します。
  • サービスを Soap Server として定義すると、WSDL 解析に関連する SOAP-ERROR が発生する可能性があります。

解決策: WsseAuthHeader を使用する

安全な接続を確立するには、SoapHeader クラスを拡張して Wsse 準拠の認証ヘッダーを作成できます。

class WsseAuthHeader extends SoapHeader {

    private $wss_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';

    function __construct($user, $pass, $ns = null) {
        if ($ns) {
            $this->wss_ns = $ns;
        }
        // ... (rest of the class definition as provided in the answer)
    }
}

作成したら、WsseAuthHeader オブジェクトを SOAP ヘッダーとして設定できます。 :

$wsse_header = new WsseAuthHeader($username, $password);
$x = new SoapClient('{...}', array("trace" => 1, "exception" => 0));
$x->__setSoapHeaders(array($wsse_header));

このアプローチでは、WS セキュリティで保護された Web サービスとの認証された接続が正常に確立されます。

追加オプション

  • タイムスタンプと nonce の使用: セキュリティを強化するには、WsseAuthHeader にタイムスタンプと nonce を組み込むことを検討してください。
  • 他のソリューションの参照: 代替案については、追加のリソースを参照してください。 PHP を使用して WS セキュリティで保護された Web サービスにアクセスするアプローチ。

    • https://stackoverflow.com/a/18575154/367456

以上がPHP を使用してパスワードで保護された Web サービスに対して認証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。