.net - 通过身份验证访问 [Authorize] Controller 时出现 404

标签 .net asp.net-core identityserver4

我正在尝试在 ASP.NET MVC Core 应用程序 (.NetCore 2) 上使用 IdentityServer4 实现身份验证和访问控制。虽然这不是我第一次实现后端,但这是第一次使用 .net,而且我正在为一些事情而苦苦挣扎。

我已按照 https://identityserver4.readthedocs.io/en/release/quickstarts/1_client_credentials.html 中的说明进行操作以及之前的页面。

我还添加了样本 IdentityController正如他们所展示的:

using System.Linq;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace leafserver.Controllers
{
    [Route("/api/identity")]
    [Authorize]
    public class IdentityController : Controller
    {
        [HttpGet]
        public IActionResult Get()
        {
            return new JsonResult(from c in User.Claims select new { c.Type, c.Value });
        }
    }
}

我的实现与他们的示例之间存在一些差异。据我所知:
  • 我使用本地网络地址 (192.168.1.x) 而不是 localhost
  • 提供服务
  • 他们使用的是“Web 应用程序”,而我使用的是“Web Api”
  • 他们似乎使用 ControllerBase而不是 Controller作为父类(super class)
  • 我不确定他们使用的 ASP.NET MVC 和我使用的 MVC 之间是否有区别(我使用的是核心,他们似乎没有,但通常它应该仍然可以工作...)

  • 我注意到的是以下内容:
  • 只要我不放[Authorize] , 一切都很好。我得到 200 OK 的预期结果
  • [Authorize]注释在那里,但我没有使用身份验证不记名 token ,我被重定向到登录页面(这不起作用,因为这是一个 web api,但这是以后的问题)
  • [Authorize]注释在那里,我使用(我认为是)正确的身份验证 token ,我收到 404 响应。

  • 我原本希望得到 401 响应。
    为什么我的路由不起作用,因为我使用的是身份验证 token ?

    另外,我没有从服务器获取任何日志,这无济于事...

    最佳答案

    对我来说,答案是像这样在我的 Controller 上设置 Authorize 属性

    [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme)]
    

    这在最低权限指向的文档中进行了概述。
    https://identityserver4.readthedocs.io/en/release/topics/add_apis.html

    如果我只有 [Authorize] 那么它会产生 404

    关于.net - 通过身份验证访问 [Authorize] Controller 时出现 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49009977/

    相关文章:

    java - Windows 中的虚拟设备

    c# - 如何从 C# System.Windows.Form.HtmlElement 中提取 *immediate* 文本(即不是子文本)

    c# - 升级到 asp.net core 2.2 后为空 href

    c# - Redis 缓存无法访问已处置的对象

    docker - 在 Linux 和 Azure 存储库上运行的 Docker 镜像中的 IdentityServer4 和身份验证问题

    model-view-controller - IdentityServer 4 - 使用隐式授权类型时向用户添加自定义声明

    asp.net-mvc - IdentityServer 4、OpenIdConnect 重定向到外部登录 url

    c# - 相对于单击的位置移动表单

    c# - 是否有一个 .Net 内存分析器可以跟踪大对象堆上的所有分配?

    c# - DLLImport 不适用于 Azure 应用服务网络。 3.1