【问题标题】:Identityserver4 protect/access api from/for outside usersIdentityserver4 为外部用户保护/访问 api
【发布时间】:2021-05-31 10:48:31
【问题描述】:

我想为外部用户提供 webapi 访问权限(我的意思是,用户不属于我的组织)。此 API 已使用 identityserver4 进行保护。

我们的内部应用程序也使用此 API。外部用户希望从他们的 Angular 应用程序和 .Net windows 应用程序访问此 API(2 个应用程序的相同 API)。我如何为此授予访问权限?

API 资源 --> APISample API 范围 --> api.readapi.write

请就此提出建议?

【问题讨论】:

    标签: angular api identityserver4 webapi


    【解决方案1】:

    基本上,您需要一种方法让外部用户向 IdentityServer 注册他们的“客户端应用程序”,并就 ID/访问令牌中应存在的范围/声明达成一致。或者,您必须注册客户端并提供登录详细信息。

    您可以驱动这个数据库,因此只需在数据库中添加必要的记录即可。这个门户的代码你必须自己做。

    【讨论】:

    • 好的。知道了。因此,如果外部客户端应用程序是有角度的,那么我将流定义为代码流,如果用户的应用程序是 Windows 应用程序,那么也将流定义为这样的代码,对吗?假设用户使用的是 Java 应用程序,那么它是如何定义的,知道吗?
    • 所有客户端(无论是 angular/JavaScript/Java...)他们所需要的只是您的 IdentityServer 的 URL 和 clientID/secret...。当然还有一个允许的列表要求的范围。
    • 那么这取决于使用什么流程,如果他们想使用授权代码流程(当您的客户用户想要登录时)或客户端凭据流程(用于服务到服务,无需任何人工参与)
    • 感谢您的建议。您是否为所有客户端实施了反向通道注销。我对此有些怀疑。
    • 最简单的方法是让访问令牌过期,也许只给它一个短暂的生命周期,比如几分钟......或者您的客户端可以查询身份服务器(令牌自省)以检查令牌是否仍然有效。最后,您可以提供一个在注销期间将调用客户端的 url,请参阅docs.duendesoftware.com/identityserver/v5/reference/models/…
    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2020-04-03
    相关资源
    最近更新 更多