gpt4 book ai didi

.net-core - 如何使用 Identity Server 4 授权码授权类型流程获取授权码

转载 作者:行者123 更新时间:2023-12-05 06:21:38 40 4
gpt4 key购买 nike

我将 dotnet core (.NET Core) 3.1 与 IdentityServer4 包一起使用。我有一个 SPA,我希望与 Identity Server 4 集成,所以我正在沿着使用 PKCE 使用 Authorization Code 授权类型的路径前进。我理解这种授权类型的基本概念,但是我不明白如何用用户名/密码交换授权码。这是我的理解。

  1. SPA 向/authorize 端点发出 GET 请求,类似于 http://localhost:5000/connect/authorize?client_id=js&redirect_uri=http://localhost:5003/callback.html&response_type=code&scope= openid 配置文件 api1&state=8636d5233f77413584799be6cafe03a7&code_challenge=FbNm1tMkaRMzcSBv4_d5Rpq4VNaqyINVkCAcHsZkKV0&code_challenge_method=S256&response_mode=query
  2. 返回 302 重定向到 http://localhost:5000/Account/Login我认为应该是由身份验证服务器托管的登录屏幕。
  3. 用户提交他们的凭据,授权服务器验证凭据并返回另一个 302 重定向到给定的 redirect_url,http://localhost:5003/callback.html在这种情况下。重定向网址应包含生成的授权码和查询字符串中提供的状态。
  4. SPA 验证状态,然后向 header 中包含的/token 端点发出请求:authorization=Basic Y2xpZW50OnNlY3JldA== 并在查询字符串中:grant_type=authorization_code, code=Authorization Code, redirect_uri= http://localhost/redirect
  5. 授权服务器返回一个有效的 token 。

我已经完成了第 1 步和第 2 步(还没有 UI,但这并不重要)。调用/authorize 正在工作。我收到有效的 302 响应。我卡住的地方是第 3 步和第 4 步。我是否需要编写一个端点来生成 授权码 并返回包含它的 302 重定向,或者这是已经内置到 Identity Server 4 中的东西(像/authorize 和/token 端点)?

我已经混合了很多我在网上找到的例子,包括这个 https://identityserver4.readthedocs.io/en/latest/quickstarts/4_javascript_client.html .似乎没有使用这种类型的授权类型的任何完整示例。我还在我的创业公司中加入了一些测试资源、客户和用户。

services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryApiResources(Config.GetAllApiResources())
.AddInMemoryClients(Config.GetClients())
.AddTestUsers(Config.GetUsers());

感谢您提供的任何帮助,至少可以将我推向正确的方向。

最佳答案

看看这个quickstart .特别是 login action在验证凭据的帐户 Controller 中。

有两个重要步骤:

  1. Sign in到 Identity Server(默认通过 cookie)
  2. Redirectview加载 this javascript在 PKCE 的情况下获得更好的体验。该 url 包含由身份服务器生成和管理的查询参数 codestate

关于.net-core - 如何使用 Identity Server 4 授权码授权类型流程获取授权码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59684209/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com