2017-08-03 3 views
1

Ich habe eine API, die Identity Server 4 verwendet und sich registrieren und anmelden. Aber diejenigen, die ich mit [Authorized] beschütze geben mir 404 mit oder ohne Autorisierungsheader. Wenn ich [Authorized] von der Route entferne, wird es richtig getroffen. Was könnte das Problem sein?C# .Net Core API Autorisierte Route mit Identity Server 4

Dies ist der Controller:

using Microsoft.AspNetCore.Authorization; 
using Microsoft.AspNetCore.Identity; 
using Microsoft.AspNetCore.Mvc; 
using System.Threading.Tasks; 

namespace Security.API.Controllers 
{ 
    [Route("[controller]")] 
    public class AccountController : Controller 
    { 
     private readonly IAccountService accountService; 

     public AccountController(IAccountService accountService) 
     { 
      this.accountService = accountService; 
     } 

     [HttpGet("")] 
     public string Get() 
     { 
      return "You are seeing this because account controller is working fine!"; 
     } 

     [Authorize] 
     [HttpGet("getauthorized")] 
     public string GetAuthorized() 
     { 
      return "This is authorized okay."; 
     } 
... 

ersten Treffer Route get, zweite tut

nicht

Antwort

2

Sie die [autorisieren] Attribut auf der vertrauenden Partei setzen müssen, bedeutet, dass Ihre Web-App, das ist Aufruf der Web-API. Identity Server sichern Sie Ihre Web-Apis durch Token-Authentifizierung.

  • Put [autorisieren] auf der Client-Anwendung (RP)
  • Es wird weitergeleitet Server Login auth/registrieren
  • Nach der erfolgreichen Anmeldung wird
  • hier, um die Client-Anwendung weitergeleitet bekommen den Zugang Token und rufen Sie Ihre API
+0

Nun sollte es in Zukunft so sein, aber das war zu Testzwecken. Sollte die Route nicht trotzdem getroffen werden? Ich meine, die Route weiß nicht, ob es ein Client oder Server ist, es hört auf die Anfrage ich spezifiziere :) – Norgul

+0

eigentlich weiß es irgendwie, wie wir die Middleware anders konfigurieren müssen, wenn es ein Client oder Web-API ist – JayDeeEss

Verwandte Themen