Hejsan Har ingen kod som gör det åt dig, men om du läser den här artikeln som handlar om vanlig forumlär baserad autentisering så kan du säkert gräva fram rätt namnuppslagning. Hejsan Du måste i din WebService-metod på server-sidan kontrollera om RequestContext objektet har en UsernameToken överhuvudtaget. Om så inte är fallet så är anropet "icke autentiserat"... Det gör jag med följande metod, men i denna metod kommer jag aldrig in. Den klassen kommer bara att anropas om du bifogar i SOAP-meddelandet en UsernameToken (vilket du säger i konfigurationsfilen). I det fall som du inte använder WSE på klientsidan utan istället anropar med en vanlig proxyklass så kommer det inte att ske, lägg istället till i din vanliga webmetod kod för att kontroller om RequestSoapContext.Security.Elements.Count > 0 eller något liknande.WSE 2 Active Directory
Jag skulle vilja få hjälp med klient-webservice-AD. Använder Wse 2.0.
Jag har en klient som anropar en webservice.
Webservicen ska kontrollera så att användaren finns i vårat AD.
Först vill jag kontrollera om användaren finns i mitt AD, skickar med UsernameToken
("username","okänt",PasswordOption.SendNone)
Sätter min webservice så att den ska göra en AuthenticateToken(UsernameToken tok).
Så långt fungerar det bra. Dvs jag kommer in i den & kommer åt tok.Username.
Men när jag vill göra en slagning mot AD om användarnamnet finns så går det inte bra. Eller rättare sagt. Jag har ingen aning om hur jag ska göra.
Vill endast kontrollera så att användaren existerar.
Mvh MickeSv: WSE 2 Active Directory
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secmod/html/secmod16.asp
Mvh
Johan Lindfors
MicrosoftSv:WSE 2 Active Directory
Det hälpte. Det fungerar bra.
Men har hittat ett annat problem.
Jag anropar från klienten med webservice.SerGetInfoWse();
Slänger med min usernameTicket. Fungerar lysande.
Men testar jag anropa med sregTestAD.webservice.SerGetInfo(); (inte med WSE) så släpper min websevice genom klienten. Och det var det jag trodde min webservice skulle stoppa.
Vad gör jag för fel i min webservice?
Eller hur gör jag för att stoppa anrop som inte har usernametoken?
Mvh
Micke SSv: WSE 2 Active Directory
Mvh
JohanLSv:WSE 2 Active Directory
public class WseSecurityHelpers
{
private static readonly ILog log = LogManager.GetLogger(typeof(WseSecurityHelpers));
public WseSecurityHelpers()
{
//
// TODO: Add constructor logic here
//
}
public static UsernameToken GetUserNameToken(SoapContext context)
{
log.Info("Token GetUserNameToken ");
if(context == null)
throw new Exception("Only SOAP requests are permitted");
if(context.Security.Tokens.Count == 0)
throw new SoapFormatException("Missing Security Token " + SoapFormatException.ClientFaultCode);
else
{
foreach(UsernameToken tok in context.Security.Tokens)
return tok;
throw new Exception("UserNameToken not supplied");
}
}
}
Har även lagt till.
<microsoft.web.services2>
<diagnostics>
<trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
</diagnostics>
<security>
<securityTokenManager type="sregWebServiceVisma.MyUsernameTokenManager, sregWebServiceVisma" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" qname="wsse:UsernameToken" />
</security>
</microsoft.web.services2>
Sv: WSE 2 Active Directory
Titta i hjälpfilerna som följer med WSE2, där finns ett sådan exempel har jag för mig!
Alternativet är att använda WS-Policy då det går att deklarativt kräva en UsernameToken.
Mvh