elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Configuración Service Provider SAML2 en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Configuración Service Provider SAML2 en Java  (Leído 1,700 veces)
CaTZ

Desconectado Desconectado

Mensajes: 17



Ver Perfil
Configuración Service Provider SAML2 en Java
« en: 19 Julio 2016, 15:58 pm »

Buenas gente,

Estoy un poco perdido en el tema de SAML y necesito que me iluminéis :(

Supongamos que tengo un método de una clase al cual le llega un String y me gustaría mandar este String a un IdP para que me diga si es correcto o no sin más. Simplemente tendría que configurar la parte SP para enviar este String mediante SAML a la URL del IdP....pues bien, estoy leyendo miles de cosas y no me queda muy claro el tema xD

He encontrado este código.
Código
  1. import java.io.StringReader;
  2. import java.text.SimpleDateFormat;
  3. import java.util.*;
  4. import javax.xml.parsers.*;
  5. import org.w3c.dom.*;
  6. import org.xml.sax.InputSource;
  7.  
  8. public class Example2 {
  9. private static final String reqMsg =
  10. "<samlp:AttributeQuery " +
  11. " xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' " +
  12. " ID='%%ID%%' IssueInstant='%%ISSUEINST%%' Version='2.0'>" +
  13. " <saml:Issuer xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>"
  14. +
  15. "%%ISSUER%%" +
  16. " </saml:Issuer>" +
  17. " <saml:Subject xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>"
  18. +
  19. " <saml:NameID Format='urn:oasis:names:tc:SAML:2.0:nameid-format:
  20. unspecified'" +
  21. " xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'> " +
  22. "%%SUBJECT%%" +
  23. " </saml:NameID>" +
  24. " </saml:Subject>" +
  25. "</samlp:AttributeQuery>";
  26.  
  27. public static String getAttributeRequest(String id, String issuer, String subject) {
  28.  
  29. Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("US/Arizona"));
  30. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  31. SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");
  32. String res = Example2.reqMsg
  33. res = res.replaceAll("%%ID%%", id);
  34. res = res.replaceAll("%%ISSUEINST%%", sdf.format(cal.getTime()) +
  35. "T" +
  36. sdfTime.format(cal.getTime()) + "Z");
  37. res = res.replaceAll("%%ISSUER%%", issuer);
  38. res = res.replaceAll("%%SUBJECT%%", subject);
  39. return res;
  40. }
  41.  
  42. public static Element getElementFromString(String s) throws Exception {
  43. DocumentBuilderFactory factory = DocumentBuilderFactory.
  44. newInstance();
  45. factory.setNamespaceAware(true);
  46. DocumentBuilder builder = factory.newDocumentBuilder();
  47. InputSource is = new InputSource(new StringReader(s));
  48. Document d = builder.parse(is);
  49. return d.getDocumentElement();
  50. }
  51. public static void main(String[] args) throws Exception {
  52. String id = UUID.randomUUID().toString();
  53. String issuer = "http://www.prise.es/uoc-book/example2";
  54. String subject = "cr01";
  55. String reqMsg = getAttributeRequest(id, issuer, subject);
  56. System.out.println(reqMsg);
  57. Element req = getElementFromString(reqMsg);
  58. }
  59. }

Yo me había metido la librería OpenSAML2.6.0 para trastear pero bueno, en este código como lo pone todo en un String no hace falta (no sé cómo se haría más fácil).

Entiendo que en el ISSUER debo poner la URL de mi IdP, pero no me queda claro varias cosas:

  • ¿Mi String dónde lo meto?
  • ¿Dónde recojo la respuesta? Porque he leído que para recoger las respuestas se hacen mediante Assertion, pero no sé si tengo que configurar algo o puedo hacerlo todo en la misma clase

Seguramente esté diciendo alguna burrada o algo por el estilo y pido disculpas por ello, pero es que me está costando más de lo que pensaba.

Un saludo y gracias de antemano!


En línea

CaTZ

Desconectado Desconectado

Mensajes: 17



Ver Perfil
Re: Configuración Service Provider SAML2 en Java
« Respuesta #1 en: 21 Julio 2016, 13:03 pm »

Buenas de nuevo,

Poco a poco me voy enterando (creo) y el código que he puesto antes casi que lo he cambiado entero xD

Me gustaría hacer un binding con SOAP y para ello me he creado un AuthnRequest en donde, entre otras cosas, le metido el destino (El IdP).

Ahora mismo tengo una dudilla, ¿Dónde meto mi String para pasarlo al IdP?

El código que tengo es, en resumen, un objeto AuthnRequest que paso a un objeto Element, el cual lo meto en un SOAPBody. El resultado de la llamada mediante SOAP lo recojo en un SOAPMessage.

Un saludo!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Configuracion JAVA (Solucionado)
Java
Kerber0 2 2,752 Último mensaje 17 Noviembre 2008, 22:50 pm
por joseprox
Leer fichero de configuracion mediante java.util.properties « 1 2 »
Java
alzehimer_cerebral 10 14,441 Último mensaje 13 Abril 2010, 12:09 pm
por Perikles
Archivo de configuración java
Software
santosbh 0 835 Último mensaje 21 Julio 2015, 10:12 am
por santosbh
Cisco CCIE Service Provider Training
Tutoriales - Documentación
ehn@ 0 501 Último mensaje 18 Noviembre 2023, 19:02 pm
por ehn@
CCNP Service Provider Training
Tutoriales - Documentación
ehn@ 0 531 Último mensaje 28 Noviembre 2023, 10:42 am
por ehn@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines