在ASP.NET核心身份验证

时间:2017-08-01 12:35:10

标签: security asp.net-core-mvc identityserver4

我使用自定义商店实现了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?

提前谢谢你, 安德鲁

1 个答案:

答案 0 :(得分:0)

问题在于我如何从授权请求的查询字符串中捕获并返回returnUrl值。这个问题现在已经解决了。