首页 文章

在身份服务器4中预定义的客户端注册的允许范围中是否为“api1”?

提问于
浏览
0

我正在使用Identity Server4 .

我按照快速入门并复制了一个场景,我有3个Web应用程序1. MVC web App 2. JS web App 3. API应用程序

我还配置了ASP.Net Identity以拥有持久的用户和客户端存储 .

现在,从JS Web App的Allowed scopes值中删除了一个范围“api1”,期望生成的令牌不具有此范围值 .

但是当我尝试登录时,我甚至无法查看页面,而是在管道中的某个位置获得异常 .

我之前的理解是允许的范围是一堆字符串,资源应用程序可以在服务资源时将其用于授权目的 .

任何人都可以解释我为什么要面对这个问题,还是我错过了任何一点?

如果我再次向JS Web客户端添加“api1”范围,我可以查看登录页面 .

enter image description here

1 回答

  • 1

    谢谢你的日志 . 从javascript客户端从允许的范围中删除 api1 范围时,您删除了该客户端对该范围的访问权限 . 应用程序本身正在请求 api1 但它没有权限这样做 . 因此,您需要从客户端编辑javascript客户端配置,也不要求 api1 .

    关于快速入门指南,但是你定义了客户端及其配置的地方,我会说你看起来像这样:

    var config = {
        authority: "http://localhost:5000",
        client_id: "js",
        redirect_uri: "http://localhost:5003/callback.html",
        response_type: "id_token token",
        scope:"openid profile api1",  <--- REMOVE API1 HERE 
        post_logout_redirect_uri : "http://localhost:5003/index.html",
    };
    var mgr = new Oidc.UserManager(config);
    

    请记住,客户端必须明确(在大多数情况下)表达其范围要求,如果您的任何资源范围要求失败,它将使请求失败 . 因此,您禁用了js客户端允许的范围,但它仍在请求无法访问的范围 .

相关问题