Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CaTZ

#1
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!
#2
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 (java) [Seleccionar]
import java.io.StringReader;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;

public class Example2 {
private static final String reqMsg =
"<samlp:AttributeQuery " +
" xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' " +
" ID='%%ID%%' IssueInstant='%%ISSUEINST%%' Version='2.0'>" +
" <saml:Issuer xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>"
+
"%%ISSUER%%" +
" </saml:Issuer>" +
" <saml:Subject xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>"
+
" <saml:NameID Format='urn:oasis:names:tc:SAML:2.0:nameid-format:
unspecified'" +
" xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'> " +
"%%SUBJECT%%" +
" </saml:NameID>" +
" </saml:Subject>" +
"</samlp:AttributeQuery>";

public static String getAttributeRequest(String id, String issuer, String subject) {

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("US/Arizona"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");
String res = Example2.reqMsg
res = res.replaceAll("%%ID%%", id);
res = res.replaceAll("%%ISSUEINST%%", sdf.format(cal.getTime()) +
"T" +
sdfTime.format(cal.getTime()) + "Z");
res = res.replaceAll("%%ISSUER%%", issuer);
res = res.replaceAll("%%SUBJECT%%", subject);
return res;
}

public static Element getElementFromString(String s) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.
newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(s));
Document d = builder.parse(is);
return d.getDocumentElement();
}
public static void main(String[] args) throws Exception {
String id = UUID.randomUUID().toString();
String issuer = "http://www.prise.es/uoc-book/example2";
String subject = "cr01";
String reqMsg = getAttributeRequest(id, issuer, subject);
System.out.println(reqMsg);
Element req = getElementFromString(reqMsg);
}
}


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!
#3
Java / Re: Unificar código en clase abstracta
16 Enero 2015, 10:33 AM
Muchas gracias a todos por vuestras respuestas, ya tengo todo entendido! :D
#4
Java / Re: Unificar código en clase abstracta
15 Enero 2015, 13:17 PM
Disculpa un atributo! se me fue! xD
#5
Java / Re: Unificar código en clase abstracta
15 Enero 2015, 13:04 PM
Perfecto esto ya lo tengo, gracias!

Ahora si no es mucha molestia tengo otra dudilla....

Si tengo un parámetro en la clase hija con un valor x, ¿Habría alguna manera de que la clase padre recogiera este parámetro?
#6
Java / Re: Unificar código en clase abstracta
15 Enero 2015, 12:24 PM
Buenas JonaLamper,

No se por qué pero de esa forma no me sale el método de la clase padre. ¿Sería lo mismo esto?

...
....
this.MiNumero = super.Metodo1();

#7
Java / Re: Unificar código en clase abstracta
15 Enero 2015, 09:35 AM
Muchas gracias a los 2 por vuestras respuestas.

Yo había pensado hacer lo de JonaLamper pero es que en mi caso el Metodo1 y el Metodo2 son exactamente iguales para la Clase1 y Clase2, por eso tengo que implementar ambos métodos en la clase padre (ClaseAbstracta), pero el caso es:

¿Cómo llamo al método desde la clase hija?¿Simplemente poniendo el nombre?

Mi clase abstracta sería esta:

public abstract class MiClaseAbstracta {
     public void Metodo1 () {
         return this.numero1;
     }

     public void Metodo2 () {
         return this.numero2;
     }
}


Y por ejemplo mi Clase1 sería:

public class MiClase1 extends MiClaseAbstracta {
     //¿Aquí como llamo al Metodo1 y Metodo2?
}


Muchas gracias!
#8
Java / Unificar código en clase abstracta
14 Enero 2015, 16:04 PM
Buenas tardes,

Tengo un problemilla con un tema y creo que es porque no tengo claro algunos conceptos.

Lo que tengo que hacer es unificar el código idéntico de 2 clases en otra clase abstracta para evitar duplicar el código.

Suponiendo que en Class1 y en Class2 hay 2 métodos (Metodo1 y Metodo2) que comparten código, sería meter ese código en una tercera clase abstracta (AbstractClass) para unificar el código y así cuando haya que modificar algo sólo se modifique en un sitio. El problema que tengo es que no se cómo tengo que llamar a los métodos de la clase abstracta desde las otras clases ya que yo tenía entendido que en la clase abstracta sólo se ponía el método (sin implementar código) y desde cada clase se controlaba el comportamiento.

Pues bien...yo he pensado en esto (de forma resumida):

AbstractClass
public abstract class AbstractClass{
              public boolean Metodo1 {
                    bla bla bla bla......
                    return true;
              }
              public boolean Metodo2 {
                    bla bla bla bla......
                    return false;
              }
}


Class1
public class Class1 extends AbstractClass{
              public boolean Metodo1();
              public boolean Metodo2();
}


Class2
public  Class2 extends AbstractClass{
              public boolean Metodo1();
              public boolean Metodo2();
}


¿Cómo debería hacerlo?

Muchas gracias de antemano!
#9
Java / Desplegar proyectos relacionados
27 Octubre 2014, 12:30 PM
Buenos días,

Ahora mismo tengo 2 proyectos Maven (Proyecto A y Proyecto B). En el pom.xml del Proyecto A tengo añadida la dependencia del Proyecto B. Con esta situación me gustaría crear un .war para meterlo en Tomcat y poder probar la aplicación.

Si genero el .war del Proyecto A desde Maven (mvn package) y lo pruebo, me dice que no encuentra la clase que hace referencia a la que hay en Proyecto B.

¿Qué debería de hacer para generar un .war que contenga todo lo del Proyecto A y Proyecto B?

Muchas gracias por la ayuda.
#10
Programación General / Re: Petición JSON en Java
30 Septiembre 2014, 12:48 PM
No DonVidela, mir URL no tiene ningún parámetro.

A ver si tengo algo de tiempo y me pongo a picar el código y ver qué se me pasa, pero creo que ya lo voy entendiendo.


  • Implementar la interfaz del Servicio REST
  • Conectarme a la URL del servicio
  • Pasar la URL a objeto JSON
  • Recorrerme la lista para pintar en la tabla

Si es así y no me equivoco, la parte de recogida de datos de la BBDD se hace en la parte del Servicio, ¿no? Yo sólo tendría que parsear la URL y ya está....