我使用自定义商店实现了IdentityServer4和ASP.NET核心标识:
services.AddScoped<IUserStoreProxy<UserKey>, LocalUserStore<UserKey>>();
services.AddScoped<IRoleStoreProxy<UserKey>, LocalRoleStore<UserKey>>();
//Add ASP.NET Core Identity
services.AddIdentity<UserKey, ApplicationRole>()
.AddUserStore<LocalUserStore<UserKey>>()
.AddRoleStore<LocalRoleStore<ApplicationRole>>()
.AddDefaultTokenProviders();
services.AddMvc();
//Add IdentityServer
services.AddIdentityServer().AddSigningCredential(subject_distinguished_name,
StoreLocation.LocalMachine,
NameType.SubjectDistinguishedName)
.AddTemporarySigningCredential()
.AddResourceStore<LocalResourceStore>()
.AddClientStore<LocalClientStore>()
.AddAspNetIdentity<UserKey>();
我已经验证了HybridAndClientCredential流的配置。使用有效的授权请求调用授权路由,该请求在IdentityServer上加载“登录”页面。成功登录尝试后,重定向URL是IdentityServer的根,而不是具有授权代码的Callback Url。
如果我在浏览器中输入授权请求,将返回带有授权码的回调网址。但是,它似乎只有在成功登录尝试后第二次调用授权请求后才会返回。
我在这里做错了什么?如何成功登录后,如何让我的登录页面立即返回回调URL?
提前谢谢你, 安德鲁
答案 0 :(得分:0)
问题在于我如何从授权请求的查询字符串中捕获并返回returnUrl值。这个问题现在已经解决了。