【问题标题】:Combine IdentityServer4 and MVC client结合 IdentityServer4 和 MVC 客户端
【发布时间】:2017-02-28 03:53:18
【问题描述】:

我从 Github 下载了示例 IdentityServer 和 MVC 客户端项目。 我的目标是创建一个门户环境,用户可以在其中进行身份验证,然后继续请求受保护的资源。

所以我所做的是将视图从 MVC 客户端移动到 IdentityServer 项目,更改 Client.cs 以支持同一端口上的客户端,并在 IdentityServer 的启动中添加以下内容:

        var oidcOptions = new OpenIdConnectOptions
        {
            AuthenticationScheme = "oidc",
            SignInScheme = "Cookies",

            Authority = "http://localhost:5000",
            RequireHttpsMetadata = false,
            PostLogoutRedirectUri = "http://localhost:5000/",
            ClientId = "mvc",
            ClientSecret = "secret",
            ResponseType = "code id_token",
            GetClaimsFromUserInfoEndpoint = true,
            SaveTokens = true
        };

我的问题是有什么理由,关于安全性,我不应该实施这个并将其分开吗?

【问题讨论】:

    标签: c# identityserver4


    【解决方案1】:

    从安全角度来看,这完全没有问题。

    但是我必须警告您,您在处理 cookie 和令牌时可能会遇到问题。在单独的项目中运行它们隐含地将 MVC 和 IDS 项目的关注点分开。

    您可能想要做的事情是使用app.Map() 分叉您的请求管道。 (例如,将 IDS 映射到“/identity”,将 MVC 项目映射到“/ui”)

    【讨论】:

    • 这是否意味着 cookie 和令牌在不同的身份验证方案中是分开的?我不确定你所说的映射是什么意思,应该映射什么?
    • 你知道 app.Map() 是什么意思了吗?
    • 很有趣,但不确定它是否能解决所有问题。 IdentityServer 具有某些用于重定向以及触发登录操作的内置功能,您仍然需要努力获得正确的行为。例如,您通常在点击安全页面时触发登录,登录后您将被重定向到安全页面。但是,如果我只是从匿名页面的主菜单中单击登录会怎样?预期的行为将是返回到上次访问的页面,而 IdentityServer 未设置为处理该页面。
    猜你喜欢
    • 2021-05-03
    • 2021-06-26
    • 1970-01-01
    • 2017-09-01
    • 2020-12-20
    • 1970-01-01
    • 2019-10-30
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多