2016-04-04 25 views
1

Ich habe ein Skript, das funktioniert gut, wenn der Benutzer authentifiziert:Azure App-Service Nicht autorisierte Benutzer Zugriff auf Controller

[MobileAppController] 
public class TestController : ApiController 
{ 
// GET api/Test 
[HttpGet, Route("api/Test/completeAll")] 
public string Get() 
{ 
    MobileAppSettingsDictionary settings = this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings(); 
    ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter(); 

     string host = settings.HostName ?? "localhost"; 
     string greeting = "Hello from " + host; 

     traceWriter.Info(greeting); 
     return greeting; 
    } 

    // POST api/values 
    [HttpPost, Route("api/Test/completeAll")] 
    public string Post(string hej) 
    { 
     string retVal = "Hello World!" + hej; 
     return retVal; 
    } 
} 
} 

Wie kann ich das Attribut gesehen werden [Authorize] nicht hinzugefügt, die die neue Art und Weise ist die Authentifizierung des Erfordernisses , see controller on this link. Und es ist in demselben Link angegeben, dass Controller jetzt anonym sind.

Allerdings bekomme ich Zugang verweigert, wenn ich versuche, auf den Controller vor der Authentifizierung zuzugreifen, aber nach der Authentifizierung funktioniert es gut.

Kann jemand das klären?

aktualisieren

Nach this link sollte ich nichts ändern, weil quickstart installiert ist. Und es funktioniert aber immer noch nicht:/

Antwort

4

Haben Sie die Authentifizierung/Autorisierung für den Azure App Service so eingerichtet, dass für alle Anfragen eine Authentifizierung erforderlich ist?

  • Sie App-Service ist bereits im Azure Portal
  • Alle Einstellungen -> Authentifizierung/Autorisierung (unter FEATURES)
  • Unter "Aktion wenn Anfrage nicht authentifiziert ist", auf „Anfrage ermöglichen (keine Aktion) "

Dadurch kann die Anwendung die Autorisierung und nicht den Dienst steuern.

+0

Hallo Adrian, Vielen Dank für Ihre Antwort. Ich werde es heute Abend testen. Ich hatte nur eine Frage, diese Änderung würde dann alle Endpunkte für unbefugte Benutzer offen lassen. Besteht ein Risiko in diesem Zusammenhang? Ich meine, gibt es irgendwelche Endpunkte, die ich dann manuell erledigen muss, um meinen Server zu sichern? Theoretisch bin ich nur daran interessiert, dass eine API für nicht autorisierte Benutzer verfügbar ist, für alle anderen möchte ich, dass die Benutzer dafür autorisiert werden (und ich werde daher das '[Authorize]' -Attribut hinzufügen, aber es ist mehr, wenn es einen anderen Weg gibt oder es ist ein Fehler, dies zu tun? :)) – JTIM

+0

Sie haben zwei Möglichkeiten - 1) Lassen Sie die Service-Kontrolle auth, 2) Sie steuern auth. Sie möchten # 2, was bedeutet, dass Sie jeden Endpunkt, den Sie authentifizieren möchten, mit [Autorisieren] versehen möchten. Sie können wählen. Wenn Sie # 1 wählen, werden ALLE Endpoints vom Dienst gesteuert - Sie haben keine Wahl. –

+0

Okay thx, sind die Endpunkte dann nur die, die ich öffne? Es ist nicht so, dass da etwas an anderen Orten ist, an dem ich mich irgendwie festhalten muss? – JTIM

Verwandte Themen