J'ai un client qui envoie une clé de sécurité. Le cryptage qu'ils utilisent est triple DES. Chaque assertion qu'ils envoient a une valeur de signature qui doit être validée pour leur donner les privilèges nécessaires. Pouvez-vous me donner un exemple de code qui le fait?Comment valider une valeur de signature SAML
Répondre
Le cryptage et la signature sont deux animaux différents. Triple DES est une méthode de clé symétrique (même clé utilisée pour le cryptage et le décryptage). D'un autre côté, les signatures numériques utilisent des clés asymétriques (paire de clés privée/publique), où la signature est calculée à l'aide de la clé privée, et peuvent être validées à l'aide de la clé publique. Donc, si votre client veut inclure des signatures en XML, il doit vous fournir sa clé publique. Pour le cryptage, le langage SAML utilise typiquement XMLEncryption, qui définit un format XML pour inclure des informations de clé de cryptage et des données cryptées dans vos messages SAML. Puisque l'échange d'une clé symétrique statique est problématique - si elle est interceptée, l'intercepteur peut crypter et décrypter les messages - ce qui peut être fait à la place est d'utiliser une clé symétrique dynamique qui est générée à nouveau pour chaque message, crypter le message en utilisant la clé, puis cryptez cette clé avec la clé publique d'une paire de clés de cryptage privée/publique et envoyez-la avec le message. La clé symétrique cryptée ne peut être décryptée qu'en utilisant la moitié privée de la paire de clés utilisée pour le crypter. La différence la plus importante ici, d'un point de vue clé, est que pour la signature, le client détient la clé privée et doit partager la clé publique avec vous, tandis que pour le cryptage, vous détenez la clé privée et devez partager le public clé avec le client.
Si vous souhaitez valider la signature du SAML Assertion ou l'un des objets XML signables, le OpenSAML WIKI a plus d'informations:
https://wiki.shibboleth.net/confluence/plugins/viewsource/viewpagesrc.action?pageId=3277047
Vous pouvez rechercher des 'exemples de vérification de signature.
Ce billet de blog a aussi un exemple aussi bien:
http://mylifewithjava.blogspot.com/2012/11/verifying-signatures-with-opensaml.html
Pour obtenir un 'diplôme' pour validation, voir ici: http://mylifewithjava.blogspot.com/2011/03/getting-credentials-in-opensaml.html
Pour info sur la façon de unmarshall xml dans un Ouvrir l'objet SAML, voir ici: https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromXML
Merci, Yogesh
Je suis en train d'expliquer tout cela en détail dans mon nouveau livre, A Guide to OpenSAML, https://gumroad.com/l/a-guide-to-opensaml –
Malheureusement, les liens et le livre ne ' t semblent couvrir comment construire le 'credential' (utilisé par la fonction' SignatureValidator() ') de la signature dans le SAML. – GrandAdmiral
@king - Quelle est votre plateforme? Java? C#? php? veuillez spécifier pour que l'exemple/réponse soit applicable. –
java using opensaml – stu