Comment authentifier l'utilisateur en ONVIF?
nous avons caméra réseau IP qui prend en charge ONVIF protocole. Quand j'ai essayé d'obtenir ses PTZ configuration, il donne Auth erreur. Je me suis mise en œuvre de ce programme en C. Suivants sont la demande et la réponse.
Demande:
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
"xmlns:tds=\"http://www.onvif.org/ver20/ptz/wsdl\">"
"<soap:Body>"
"<tds:GetNodes/>"
"</soap:Body>"
"</soap:Envelope>"
Réponse:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa5="http://www.w3.org/2005/08/addressing"
xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:ptzimg2="http://www.onvif.org/ver10/schema"
xmlns:ptzimg3="http://www.w3.org/2005/05/xmlmime"
xmlns:ptzimg4="http://docs.oasis-open.org/wsn/b-2"
xmlns:ptzimg5="http://docs.oasis-open.org/wsrf/bf-2"
xmlns:ptzimg6="http://docs.oasis-open.org/wsn/t-1"
xmlns:ptzimg1="http://www.onvif.org/ver20/ptz/wsdl"
xmlns:ptzimg7="http://www.onvif.org/ver20/imaging/wsdl"
xmlns:ter="http://www.onvif.org/ver10/error">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<SOAP-ENV:Code>
<SOAP-ENV:Value>
SOAP-ENV:Sender
</SOAP-ENV:Value>
<SOAP-ENV:Subcode>
<SOAP-ENV:Value>
ter:NotAuthorized
</SOAP-ENV:Value>
</SOAP-ENV:Subcode>
</SOAP-ENV:Code>
<SOAP-ENV:Reason>
<SOAP-ENV:Text xml:lang="en">
Sender Not Authorized
</SOAP-ENV:Text>
</SOAP-ENV:Reason>
<SOAP-ENV:Node>
http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver
</SOAP-ENV:Node>
<SOAP-ENV:Role>
http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver
</SOAP-ENV:Role>
<SOAP-ENV:Detail>
The action requested requires authorization and the sender is not authorized
</SOAP-ENV:Detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
Comment puis-je authentifier l'utilisateur? Grâce
- Q: vous Êtes à la main de codage de votre SAVON? Q: Quel est le modèle de l'appareil photo et le fabricant? Ils prennent en charge une interface de la bibliothèque? Ou toutes les spécifications (en plus de l'WSDL)? Avez-vous essayé de les contacter (au moins pour un exemple de code)?
- Son appareil photo Canon VB-M40. Cette méthode d'authentification est donnée dans le protocole ONVIF programmeur guide. "onvif.org/Portals/0/documents/WhitePapers/..."
Vous devez vous connecter pour publier un commentaire.
ces commandes qui authentification requis. Leurs en-têtes d'authentification peut être ajouté comme cela.
Digest = B64ENCODE( SHA1( B64DECODE( Nonce ) + Date + Password ) )
mais à la fois la date et mot de passe sont des chaînes de caractères qui ont été convertis en binaire. Que signifie pour convertir une chaîne binaire? Comment avez-vous générer le digérer?Vous pouvez utiliser gSoap avec WSSE plugin pour générer du C++ client proxy à partir d'OnVif WSDL que vous avez besoin.
Faire grandement simplifié mon travail. Voici un exemple d'appel de GetVideoEncoderConfiguration et de lire la réponse.
Donc pas de créer manuellement des messages soap. gSOAP code généré prend en charge que dans la couche inférieure. Bien sûr, il faut mi 2 jours pour générer du code qui fonctionne avec wsse de soutien, mais c'était encore probablement 10 fois plus vite la faire à la main. Si vous êtes intéressé par de plus amples informations vous pouvez me contacter.