【问题标题】:Does IdentityServer4 have API to validate an access token?IdentityServer4 是否有 API 来验证访问令牌?
【发布时间】:2017-05-14 11:59:50
【问题描述】:

我有一个使用 IdentityServer4 构建的身份服务器。

我有 2 个应用程序(1 个 .NET,1 个 PHP)相互访问资源并使用此 Identity Server 验证请求标头中的访问令牌。

在 Identity Server 应用程序中,我添加了一个客户端配置,如下所示

clients.Add(
            new Client
            {
                ClientId = "myClientId",
                ClientName = "My Client Name",
                ClientSecrets = new List<Secret>
                {
                    new Secret("secret".Sha256())
                },
                AllowedGrantTypes = GrantTypes.ClientCredentials,
                AllowedScopes = new List<string>
                {
                    "php.es.api"
                }
            });

从 .NET 应用程序中,我可以通过调用范围为“php.es.api”的方法 RequestClientCredentialsAsync 轻松获取访问令牌。然后添加此不记名令牌并向 PHP API 发送请求。

问题是我不知道 IdentityServer4 是否有 API,以便 PHP 应用程序可以调用它来验证访问令牌。我用谷歌搜索并没有找到任何关于这个 API 的文档。

我是否必须在 Identity Server 应用程序中为 PHP 或其他非 .NET 应用程序编写新的 API 来验证令牌?

.NET 应用程序从 PHP 应用程序访问资源,如下所示。

【问题讨论】:

    标签: c# php .net identityserver4


    【解决方案1】:

    有一个称为introspection endpoint 的标准端点,它由IdentityServer4 支持。您最好的选择是在 PHP 中找到一个执行此操作的 oauth 客户端。如果您使用自包含的不记名令牌,则可以验证令牌而无需反向通道通信,因为不记名令牌由您的提供者签名,并且您的提供者在验证令牌所需的发现文档中列出了其密钥 (/.well -已知/openid 配置)。我对 PHP 不太熟悉,无法为您指明正确的方向,了解那里可能有哪些很酷的库

    【讨论】:

    • 我尝试调用 introspect 端点,但它总是返回登录页面,它不是 IdentityServer4 文档中的对象,尽管我的授权类型是 ClientCredentials。
    • 我还没有找到一个库来验证 PHP 中的访问令牌。我暂时使用自省端点,如果我在范围内添加秘密,它工作得很好。非常感谢。
    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 2021-10-04
    • 2018-01-21
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多