【问题标题】:asp.net 5 and IdentityServer4asp.net 5 和 IdentityServer4
【发布时间】:2016-08-07 18:07:29
【问题描述】:

我正在使用 ASP.NET 5 为网站重新架构开发原型,并且我正在讨论使用 IdentityServer4 进行身份验证和授权。我已经查看了很多关于设置 IdentityServer3 和 4 的示例和文章,如果它能够以适当的方式处理我的客户的要求,我正在努力思考。这是我的要求。

我有 3 个需要授权的网站。站点 1 (abc.com) 将需要 Windows 身份验证,并且将是使用角色(或转换为声明的角色)进行授权的 mvc 和 webapi 调用的组合。站点 2 (def.com) 是一个受信任的站点,它希望在其站点上有一个带有用户名/密码/rememberme 文本框的登录小部件,当提交该小部件时,将对用户进行身份验证并将他们重定向到站点 3 (xyz.com)。站点 3 也将有自己的登录页面,并且将是使用声明的 mvc 和 webapi 调用的组合。站点 2 和 3 将不使用 Windows 身份验证,并且客户端不希望它们重定向到身份服务器登录屏幕,而是拥有自己的登录屏幕并使用带有凭据的代码调用身份服务器进行登录。

这是我关于这个场景和 IdentityServer4 的问题。

  1. Idsvr4 可以使用 Windows 身份验证处理一个客户端吗? 另一个使用用户名/密码身份验证?
    • 如果有,是否有 在 idsvr4 中使用 Windows 身份验证的原因还是应该只使用标准 webapp 中的 windows 身份验证?
  2. 是否可以设置 idsvr4 让客户端收集用户名/密码/rememberme 值并通过代码将它们传递给 为 mvc 和 webapi 获取正确的 jwt 令牌?

    • 如果可以,可以吗 将它们同时登录到另一个站点上的 mvc 和 webapi 应用程序?

    • 如果是这样,这是否绕过了 identityserver4 的真正目的 所以这是个坏主意?

  3. 如果它可以处理这种情况并且是一个好主意,我将如何设置客户端、范围和代码以通过代码和重定向处理登录?

示例非常好,非常受欢迎,但我什至不确定要使用什么措辞来搜索这个场景,所以即使指出我正确的方向也会有很大帮助。

【问题讨论】:

标签: asp.net-web-api2 asp.net-core asp.net-core-mvc windows-authentication identityserver4


【解决方案1】:

不确定这个问题是否仍然有效。但是,是的,我相信你可以做到这一切。

1)您可以通过在客户端上设置IdentityProviderRestrictionsdocs)来设置每个客户端可用的ldp

1.1) - 不确定您的意思,我相信拥有 idsrv 的目的之一是让您进行身份验证,它使未来的网站更容易与相同的服务集成。

2) 使用客户端(应用程序)登录时,您还指定客户端有权访问的 apiResource - 并且应用程序需要在登录时将其添加到请求的范围内。因此,如果您的客户端是 mvc 应用程序,您只需在AllowedScopes 中添加ApiResource - 并将request_type 设置为id_token code - 这将为用户提供access_token,该access_token 随每个请求一起传递给后端api。 (docs)

2.1) - 这基本上会在两个站点上登录用户 - 使用表示用户被授权使用后端 api 的访问令牌。

2.2) - 在我看来,这个流程是 idsrv 很棒的原因之一 - 他们甚至提到这是 idsrv 本身的一个很棒的功能。您只需访问 authserver 1 次即可访问所有系统。

至于 pt。 3 - 多看一下文档,尝试按照快速入门设置一个空白项目。

要从您自己的登录页面登录,您需要使用授权类型Resource Owner password - 尽管出于安全问题(通过网络传输密码)他们不建议这样做 - 它是受支持的。

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2019-07-19
    • 2021-04-11
    • 2018-09-29
    相关资源
    最近更新 更多