我正在使用带有IdentityServer4软件包的dotnet核心(.NET Core)3.1。我有一个SPA,希望与Identity Server 4集成,所以我沿使用PKCE使用授权码授予类型的方法进行了研究。我了解这种授予类型的基本概念,但是我不了解如何将用户名/密码交换为授权码。这就是我的理解。
http://localhost:5000/connect/authorize?client_id=js&redirect_uri=http://localhost:5003/callback.html&response_type=code&scope=openid profile api1&state=8636d5233f77413584799be6cafe03a7&code_challenge=FbNm1tMkaRMzcSBv4_d5Rpq4VNaqyINVkCAcHsZkKV0&code_challenge_method=S256&response_mode=query
我已经完成了第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());
感谢您提供的任何帮助,至少可以将我推向正确的方向。
答案 0 :(得分:1)
看看这个quickstart。特别是,帐户控制器中的login action用于验证凭据。
有两个重要步骤:
答案 1 :(得分:0)
对于第3步,您确实需要使用ui / endpoint进行用户登录
IdentityServer4团队通过创建一个可以导入的模板使此操作变得容易 这是模板的链接-https://github.com/IdentityServer/IdentityServer4.Templates
在这种情况下,我认为您需要is4ui模板