身份服务器 3,是否可以有一个 api 端点来获取访问令牌

Identity server 3, is it possible to have an api endpoint to get access tokens

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

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

理想情况下,我们希望访问 id 服务器应用程序的端点(使用用户名、密码、范围等),它 return 我们使用我们的访问令牌 json 主体。

这可能吗?

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

我认为问题是测试一个 API,它期望在其 header 中有一个标记,以及如何获取该标记来测试 api。如果我没看错,请看下面。

我用 Postman 来测试我们的 API。 Post人类有能力做到这一点。

按照以下步骤操作

  1. Post man 转到授权选项卡并输入 select Oauth2.0

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

正如您所说,它的 identityserver 3 令牌名称是 "any name you want" auth url 是你的“https://servername/connect/authorize” AccessToken Url 是 "https:servername/connect/token" clientid 是你的clientid secret 是你的 clientid 的秘密 范围就是你的范围 Granttype 是授权码。

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

在现有令牌下,您将看到您在令牌文本框中输入的名称。单击它,它会向您显示令牌。从下拉列表中选择将令牌添加到 header,然后单击使用令牌按钮,它将添加到您要测试的端点的 header。

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