Ich werde einen Web-Service in C# erstellen. Client wird Benutzername und Passwort senden. Ich möchte den Benutzer vor dem Erreichen einer Webmethode, dh in IIS level.Ist es möglich, einen Filter erstellen in C# .Kann jemand pls teilen Sie den Code oder Link.User Details sind in MSSQL-Datenbank gespeichert [Ich möchte einen solchen Benutzer validieren ist in Database.Wenn Benutzer nicht vorhanden ist, dann möchte ich die Anfrage, dort selbst zu blockieren. Zweck ist es, die Validierung des Benutzers in jeder Web-Methode zu vermeiden].So implementieren Sie die Authentifizierung in WebService
Antwort
Ich würde empfehlen, einen REST-basierten Webservice zu erstellen und über einen API-Schlüssel anstelle von Benutzernamen und Kennwörtern zu senden.
Werfen Sie einen Blick auf: REST GET requests, verbs and apikey
Dann einfach Google REST basierte ASP.NET Webservices für jede Menge Tutorials, wie es zu erreichen.
Implementierung zeigen
Hinweis aktualisiert: Ich nicht die Originalseite aber dieser Code basierte irgendwo eine Probe finden.
Schritt 1 - Bearbeiten web.config
dies im Abschnitt system.serviceModel ein.
<behaviors>
<serviceBehaviors>
<clear />
<behavior>
<!-- This behavior enables API Key Verification -->
<serviceAuthorization serviceAuthorizationManagerType="API.APIKeyAuthorization, API" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Schritt 2 - API Berechtigungsklasse erstellen
Ändern Sie den Code in IsValidAPI Schlüssel Ihre aktuelle Situation anzupassen. Sie können sehen, dass meins zu einer Funktion geht, um zu testen, ob der API-Schlüssel gültig ist.
namespace API
{
public class APIKeyAuthorization : ServiceAuthorizationManager
{
public const string APIKEY = "APIKey";
public const string APIKEYLIST = "APIKeyList";
protected override bool CheckAccessCore(OperationContext operationContext)
{
return IsValidAPIKey(operationContext);
}
public bool IsValidAPIKey(OperationContext operationContext)
{
// if verification is disabled, return true
if (Global.APIKeyVerification == false)
return true;
string key = GetAPIKey(operationContext);
// Convert the string into a Guid and validate it
if (BusinessLogic.User.ApiKey.Exists(key))
{
return true;
}
else
{
// Send back an HTML reply
CreateErrorReply(operationContext, key);
return false;
}
}
public string GetAPIKey(OperationContext operationContext)
{
// Get the request message
var request = operationContext.RequestContext.RequestMessage;
// Get the HTTP Request
var requestProp = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
// Get the query string
NameValueCollection queryParams = HttpUtility.ParseQueryString(requestProp.QueryString);
// Return the API key (if present, null if not)
return queryParams[APIKEY];
}
private static void CreateErrorReply(OperationContext operationContext, string key)
{
// The error message is padded so that IE shows the response by default
using (var sr = new StringReader("<?xml version=\"1.0\" encoding=\"utf-8\"?>" + APIErrorHTML))
{
XElement response = XElement.Load(sr);
using (Message reply = Message.CreateMessage(MessageVersion.None, null, response))
{
HttpResponseMessageProperty responseProp = new HttpResponseMessageProperty() { StatusCode = HttpStatusCode.Unauthorized, StatusDescription = String.Format("'{0}' is an invalid API key", key) };
responseProp.Headers[HttpResponseHeader.ContentType] = "text/html";
reply.Properties[HttpResponseMessageProperty.Name] = responseProp;
operationContext.RequestContext.Reply(reply);
// set the request context to null to terminate processing of this request
operationContext.RequestContext = null;
}
}
}
public const string APIErrorHTML = @"
<html>
<head>
<title>Request Error - No API Key</title>
<style type=""text/css"">
body
{
font-family: Verdana;
font-size: x-large;
}
</style>
</head>
<body>
<h1>
Request Error
</h1>
<p>
A valid API key needs to be included using the apikey query string parameter
</p>
</body>
</html>
";
}
}
API Genehmigung erfolgt, bevor Sie sogar die Web-Methode treffen. In diesem Beispiel wird jedoch der API-Schlüssel als Querystring übergeben. Befolgen Sie weitere Beispiele im obigen Link, um dies über HTTP-Header zu ändern. Ein sauberer Ansatz, der Ihre URLs nicht durcheinanderbringt. Aber das hängt alles von Ihren Anforderungen ab.
aktualisieren Eigentlich kam ich nur über diese: Microsoft ASP.NET Web API - http://www.asp.net/web-api
Versuchen Sie, dass :)
Mein Zweifel ist, wie man die Anfrage behandelt, bevor es zur Webmethode erreicht. – user922834
- 1. So implementieren Sie benutzerdefinierte Authentifizierung in ASP.NET MVC 5
- 2. WebService-Header-Authentifizierung
- 3. So implementieren Sie die Lokalisierung in web.sitemap
- 4. So implementieren Sie die Einzelauswahl in RecyclerView?
- 5. So implementieren Sie die Ablaufverfolgung in .net
- 6. So implementieren Sie die Bestellungsanalyse in MATLAB
- 7. So implementieren Sie die Summation in GAMS
- 8. So implementieren Sie die Barrierefreiheit in Java
- 9. Wie implementieren Sie Token-Authentifizierung in Flask?
- 10. So implementieren Sie Benutzerauthentifizierung in Phoenix
- 11. So implementieren Sie die externe Authentifizierung mit lokalen Ansprüchen in mvc 5
- 12. So implementieren Sie die Google OpenID-Authentifizierung in PHP & Test auf Localhost
- 13. So implementieren Sie die Volltext-Volltext-Suchmaschine
- 14. So implementieren Sie die Datenbankzugriffssteuerung auf Zeilenbasis
- 15. So implementieren Sie IAsyncOperationWithProgress
- 16. So implementieren Sie die automatische Speicherung
- 17. So implementieren Sie die indizierte Standardeigenschaft []
- 18. So implementieren Sie die interaktive iOS8-Benachrichtigung
- 19. So implementieren Sie Benutzerprofil mit Token-Auth
- 20. So implementieren Sie SAML SSO
- 21. So implementieren Sie Excel ACCRINT
- 22. So entfernen Sie die Authentifizierung von HTTPServerAuthModule in Jboss EAP
- 23. So deaktivieren Sie die integrierte Windows-Authentifizierung in Chrome
- 24. So implementieren Sie Braintree Escrow
- 25. DDD - So implementieren Sie Fabriken
- 26. So implementieren Sie HTTP-Tunneling
- 27. So implementieren Sie if-else
- 28. So aktivieren Sie die CORS-Unterstützung und die NTLM-Authentifizierung
- 29. So erstellen Sie einen Webservice von Qt
- 30. So implementieren Sie threadsichere Warteschlangen
"Kann jemand pls den Code oder einen Link teilen": Wie über Sie einige schreiben und dann mit einer echten Frage zurückkommen? –