【问题标题】:Identity server 3, is it possible to have an api endpoint to get access tokens身份服务器3,是否可以有一个api端点来获取访问令牌
【发布时间】:2018-01-04 07:16:14
【问题描述】:

我们有一个 api 将身份验证卸载到身份服务器 3 的实现。当用户使用我们的应用程序时,他们会被定向到身份服务器进行身份验证,使用用户名和密码或 AD

对于我们的功能测试,我们需要能够通过 api 进行身份验证,有没有办法通过 REST 端点向 id server 进行身份验证,而不是被定向到网页和/或回调 url?

理想情况下,我们希望访问 id 服务器应用程序的端点(带有用户名、密码、范围等),它会返回一个带有访问令牌的 json 正文。

这可能吗?

【问题讨论】:

    标签: asp.net-web-api2 identity identityserver3


    【解决方案1】:

    Identity Server 3 不这样做,主要是因为发送密码是个坏主意。 see also

    【讨论】:

      【解决方案2】:

      我认为问题是测试一个在其标头中需要一个令牌的 API,以及如何获取该令牌来测试该 API。如果我猜对了,请看下文。

      我使用 Postman 来测试我们的 API。邮递员有能力做到这一点。

      按照以下步骤操作

      1. 发帖人转到授权选项卡并在类型中选择 Oauth2.0

      2.单击获取新访问令牌按钮并填写详细信息

      正如您所说,它的身份服务器 3 令牌名称是“您想要的任何名称” 身份验证网址是您的“https://servername/connect/authorize” AccessToken Url 是“https:servername/connect/token” Clientid 是您的客户端 ID 秘密是你的客户的秘密 范围是你的范围 Granttype 是授权码。

      然后单击“请求令牌”按钮,系统将提示您输入用户名和密码。确保在您的数据库中的表 clientredireturi 下添加“https://www.getpostman.com/oauth2/callback”。

      在现有令牌下,您将看到您在令牌文本框中提供的名称。单击它,它将向您显示令牌。从下拉列表中选择将令牌添加到标题,然后单击使用令牌按钮,它将被添加到您尝试测试的端点的标题中。

      【讨论】:

      • 感谢您的详细帖子。这是我们试图避免的人际互动。我们希望我们的功能测试,即物理上命中我们的 api 的测试,以便在没有人工交互的情况下进行身份验证。
      【解决方案3】:

      我们找到了方法。为了解决这个问题,我们仅为我们的测试环境创建了一个新客户端,该客户端具有客户端资源类型的资源。这可以在没有用户输入的情况下进行身份验证(使用我们自己的凭据而不是第三方)

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 1970-01-01
        • 2018-06-11
        相关资源
        最近更新 更多