【问题标题】:How do I setup IdentityServer AllowAnonymous actions that uses my webapi? (WebApi with MVCClient and IdentityServer4)如何设置使用我的 Web api 的 IdentityServer AllowAnonymous 操作? (带有 MVC 客户端和 IdentityServer4 的 Web Api)
【发布时间】:2017-10-26 16:17:11
【问题描述】:

我有一个 IdentityServer、一个 Web Api 和一个最终将成为 SPA 的 MVCClient。 (.Net Core 2)

我的 MVCClient 混合了授权和非授权操作(或页面)。我能够从 IdentityServer 成功调用并获取令牌(服务器到服务器)并验证它是否有效。使用基于他们提供的示例的以下行。

public async Task<IActionResult> CallApiWithClientToken()
        {
            var discovery = await DiscoveryClient.GetAsync("http://localhost:<myport>");

            // request token
            var tokenClient = new TokenClient(discovery.TokenEndpoint, "inventoryApp", "mysecret");
            var tokenResponse = await tokenClient.RequestClientCredentialsAsync("invAPIScope");

            var client = new HttpClient();
            client.SetBearerToken(tokenResponse.AccessToken);
            var content = await client.GetAsync(_apiUrl + "/testidentity/get");

            if (!content.IsSuccessStatusCode)
            {
                return new JsonResult(tokenResponse.Error);
            }
            else
            {
                return new JsonResult(content.Content);
            }

        }

第一个问题: 但是一旦我尝试获取令牌并遵循上述代码的流程,使用邮递员,它会抛出 'Unauthorized' 错误。我不确定电话有什么问题。我只是从(邮递员的)授权选项中获得一个令牌,然后对端点进行 get 调用,这似乎很简单。

我的目标是,我的 MVCClient 上有一个页面 (AllowAnonymous),我计划使用 React。此页面不需要登录凭据,但会调用我的 Api (AllowAnonymous)。但我想确保 api 受到为 mvcclient 生成的令牌的保护。因此,该 api 不能被未在我的 IdentityServer 上注册的其他第三方应用程序使用。

我查看了 IdentityServer 团队提供的示例项目,这就是我所有代码的基础。我不确定我是否遗漏了他们的示例。我没有看到任何需要令牌才能在 mvcclient 端对公共页面(allowanonymous)进行 api 调用的示例。

已编辑以使其更清晰

【问题讨论】:

    标签: c# identityserver3 identityserver4


    【解决方案1】:

    AllowAnonymous 属性,它否定授权属性并允许匿名访问您的操作。但在您的情况下,您希望您的 api 调用受到令牌的保护

    此页面将调用我的 Api。但我想确保它受到为 mvcclient 生成的令牌的保护。

    我想您需要确保用户在拨打此电话之前已登录。

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多