2016-12-30 96 views
1

我有一个使用IdentityServer4构建的Identity Server。IdentityServer4是否有API来验证访问令牌?

我有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应用程序,我可以通过调用方法RequestClientCredentialsAsync与范围“php.es.api”获得访问令牌容易。然后添加此不记名令牌并将请求发送到PHP API。

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

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

.NET应用程序如下访问来自PHP应用程序的资源。

IdentityServer4

回答

1

有被称为这个标准的端点introspection endpoint,它是由IdentityServer4支持。你最好的选择是在PHP中找到一个oauth客户端来完成这个任务。如果您正在使用独立承载令牌,则无需进行反向信道通信即可验证令牌,因为承载令牌由您的提供商签名,并且您的提供商在发现文档中列出了验证令牌所需的密钥(/.well -known/OpenID的配置)。我不太熟悉PHP,以便指向正确的方向,可能会有什么酷图书馆

+0

我尝试调用introspect端点,但它始终返回登录页面,它不是文档中的对象IdentityServer4,虽然我的授权类型是ClientCredentials。 –

+0

我还没有找到一个库来验证PHP中的访问令牌。我暂时使用内省端点,如果我在范围内添加秘密,它运作良好。非常感谢。 –

相关问题