Belgesi ile şifre çözme http yanıtı

1 Cevap php

I'm new to php and I need to authenticate to a SSO server. The SSO server is a .Net one, using a SSL certificate.

When I go back from the SSO server, the response is encoded. I have the key of the certificate of course, but how could I decrypt the response ?

Bu benim için çok muğlak, cevap detaylara çekinmeyin :)

Many thanks in advance for your help, best regards

1 Cevap

Sen php şeffaf ssl kısmını halledeyim http/ssl stream wrapper kullanabilirsiniz.

Basit başlayalım:

$c = file_get_contents('file.txt');

Hiçbir sarıcı belirtilmiş, bu nedenle file :/ / varsayılan olarak kullanılır. file:// wrapper) yerel dosya file.txt ve file_get_contents (açmaya çalışırsa akışından verileri okur.

Sonraki adım: http sarıcı

$c = file_get_contents('http://docs.php.net/fopen');

Şimdi bir sarıcı belirtildi. http-wrapper saat ttp :/ / docs.php.net / fopen için bir istekte ve file_get_contents hangi bir dere () tüm veri olarak sonuç verir.

Ssl desteği etkinse de (http://docs.php.net/openssl ayrıca bkz) http s kullanabilirsiniz.

$c = file_get_contents('https://developer.mozilla.org/en/gecko_dom_reference');

Optional: server/client authentication
You can attach a context to a php stream allowing you to set options/parameter for the involved stream wrappers.
E.g. the http-wrapper take the http.user_agent parameter into account when sending a http request to a server. So, if you want to make the server "believe" that a specific version of firefox makes a request for a document and you can do something like

$context = stream_context_create(
  array(
    'http'=>array('user-agent'=>'Mozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729)')
  )
);
$c = file_get_contents('http://docs.php.net/fopen', 0, $context);

Bir https isteği hem http ve ssl seçenekleri kullanılır yaparken

$context = stream_context_create(
  array(
    'http'=>array(  ...http-wrapper options here ),
    'ssl'=>array(  ...ssl-wrapper options here )
  )
);

Https sunucu bir kaynağa erişim izin vermeden önce kimlik doğrulaması gerektirebilir. Bir istemci sertifikası isteği ile göndermek zorundadır ve sunucu kabul edilebilir olup olmadığını karar verir. Bağlam parametresi ssl.local_cert istekte kullanılan istemci sertifikasını belirlemenizi sağlar. Sertifika dosyası şifre korumalı olabilir. Bu durumda ssl.passphrase olarak parolayı sağlamak zorunda

$context = stream_context_create(
  array(
    'ssl'=>array(
      'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
      'passphrase'=>'my secret passphrase'
    )
  )
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);

On the other hand you might (also) want to make sure that the server really is what it claims to be. How it's decided whether a (server) certificate is acceptable/valid/trustworthy is a bit beyond this post. http://docs.php.net/book.openssl
Set ssl.verify_peer=true and pass the information where to find the verification data as ssl.cafile

$context = stream_context_create(
  array(
    'ssl'=>array(
      'local_cert'=>'xyz/VolkerCA/UserVolker.pem',
      'passphrase'=>'my secret passphrase',
      'verify_peer'=>true,
      'cafile'=>'xyz/VolkerCA/VolkerCA.pem'
    )
  )
);
$c = file_get_contents('https://hermes..../ssl/test.php', 0, $context);