我正在尝试通过这篇文章使用 ASOS 来实现 OpenID Connect 服务器(资源所有者密码凭据授予)。当我在一个应用程序中同时拥有授权服务器和资源服务器时,一切正常。但是当我将它们拆分到两个应用程序(但在一台机器上)时,资源服务器无法验证令牌并返回The access token is not valid。
我下载了源代码AspNet.Security.OAuth.Validation
来调查这个问题,它返回null
这里
以下是来自授权服务器的一些日志:
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 请求启动 HTTP/1.1 POST http://localhost:5000/connect/token application/x-www-form-urlencoded;字符集=UTF-8 77 信息:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] 从 HTTP 请求中成功提取令牌请求:{ "grant_type": "密码", "用户名": "用户登录", "password": "[出于安全原因删除]", “范围”:“offline_access” }。 信息:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] 令牌请求已成功验证。 trce:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] 触发了登录操作:sub:123,用户名:UserLogin;[.scopes, ["email","profile","offline_access"]], [.resources, ["resource_server"]]。 dbug:Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[37] 从文件 'C:\Users\User1\AppData\Local\ASP.NET\DataProtection-Keys\key-********-****-****-****- 读取数据64bb57db1c3b.xml'。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[18] 找到密钥 {********-****-****-****-64bb57db1c3b}。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.DefaultKeyResolver[13] 考虑将到期日期为 2017-09-27 16:44:49Z 的密钥 {********-****-****-****-64bb57db1c3b} 作为默认密钥。 dbug:Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiXmlDecryptor[51] 使用 Windows DPAPI 解密秘密元素。 dbug:Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.CngCbcAuthenticatedEncryptorDescriptor[4] 使用链接模式 CBC 从提供者“(null)”打开 CNG 算法“AES”。 dbug:Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.CngCbcAuthenticatedEncryptorDescriptor[3] 使用 HMAC 从提供者“(null)”打开 CNG 算法“SHA256”。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider[2] 使用密钥 {********-****-****-****-64bb57db1c3b} 作为默认密钥。 trce:Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector[31] 对密钥 {********-****-****-****-64bb57db1c3b} 执行保护操作('C:\Users\User1\documents\visual studio 2017\Projects \OpenIdDictSample\Aka.OpenIdConnectServer'、'OpenIdConnectServerHandler'、'AccessTokenFormat'、'ASOS')。 trce:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] A new access token was successfully generated using the specified data format: CfDJ8NSKICBGwihOm75ku1fbHDtG4usEbfF-mLGaJcGGFEPQJLb36rfHqCTJ3Clu_SCBRHlaZ_B7s3pxNfUqS9fPfjtjjEH1KKmkiV6gvakRYf0Iof32BVddUUPgd7sEDrB0fET91pIDJT9WwsPx653viw5tFyvrztsSD5CYAOQZjm1werRcVPuvwRhXUQb_9Vbba52tqj8y7WbOjk78Hl17knbwSz4C70vwlRU5pL_Bp41R4vEEKwtm_VMQ_u1kSBKM5KjOh6OKdbDJ9jOhyh4RpNbvGN25ZskzByi8ndKRW3dmajWYyf-0cj6-4MEE5Hocd47te8C-haYIxEUb7tcQ-JTItknIiE1sk6W7zHlhLg3nprE2Ct4mvKi11G7Kvd1W4u-UmEvL1NesjVFNKpNJVdEaK2I8mcNzJLU69ZnM4poRrLqEqD__cHa8nCFgPtE9L0Jyo6IyFwc7NZ2sXz7y7lPfJ9Q3Pu1W_t0lOGBte5uKHfJZpiOYaqKrAwdJSpULLK52iKoCNhRYxOSdq__DNJs ; 子:123,用户名:UserLogin;[.scopes, ["email","profile","offline_access"]], [.resources, ["resource_server"]], [.issued, Fri, 30 Jun 2017 09:13:29 GMT], [.expires , 周五, trce:Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector[31] 对密钥 {********-****-****-****-64bb57db1c3b} 执行保护操作('C:\Users\User1\documents\visual studio 2017\Projects \OpenIdDictSample\Aka.OpenIdConnectServer'、'OpenIdConnectServerHandler'、'RefreshTokenFormat'、'ASOS')。 trce:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] A new refresh token was successfully generated using the specified data format: CfDJ8NSKICBGwihOm75ku1fbHDtcKlYz_IbJiNmiW_tfu19E7p5BIO9xE0b2qu8mYWw-zD7wCWB1F5Fx548L4FARrsJwlJls1AkK2GrqXjV0krH6me_btsSAxM9trrFCUL2ZrXkm2sStZ6DUcbf_cSNFh-YxXft-gbLGV11THAINTb8K9-v_fkeXq7aN8Qgu7zJfhON1ehflLwZ-DXZwW_S9assqx8f7oe-n5gTzOO6PjEyO5g0YMJ1SY7X-sMO1MKjn03vZxPB0ecT0l8NXB89vGhW7kZnoEaL1NwmSTiEOYMatwrkURPBgb2YLnpiu7sYAD04HxsicoLaQTDbc8ZJyWUJ7guLl6Mp2HLhZG_wLQM9REC_QeZX8eDn8aqSOiGKZeLF4G7A5y369VIZ0RPASdTpEsAHSE8ws0RB18jap-75bM_aAi3w3-PlfnY7ySnDYm3xkF1ImyBcph2XF6R8-imdAXhQG-tTAYd2FKw4msaWCPcnX5CxYlo-alVYpd878haDvo43fCvbd2_Dc2O1wI98 ; 子:123,用户名:UserLogin;[.scopes, ["email","profile","offline_access"]], [.resources, ["resource_server"]], [.issued, Fri, 30 Jun 2017 09:13:29 GMT], [.expires , 周五, 信息:AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0] 令牌响应成功返回:{ “资源”:“资源服务器”, “范围”:“电子邮件配置文件offline_access”, "token_type": "承载者", "access_token": "[出于安全原因删除]", “expires_in”:3600, "refresh_token": "[出于安全原因删除]" }。
以下是来自资源服务器的一些日志:
信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 请求开始 HTTP/1.1 GET http://localhost:5001/api/values trce:Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector[5] 使用目的('C:\Users\User1\documents\visual studio 2017\Projects)对密钥 {********-****-****-****-64bb57db1c3b} 执行取消保护操作\OpenIdDictSample\Aka.WebApi'、'OpenIdConnectServerHandler'、'AccessTokenFormat'、'ASOS')。 dbug:Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[37] 从文件 'C:\Users\User1\AppData\Local\ASP.NET\DataProtection-Keys\key-********-****-****-****- 读取数据64bb57db1c3b.xml'。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[18] 找到密钥 {********-****-****-****-64bb57db1c3b}。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.DefaultKeyResolver[13] 考虑将到期日期为 2017-09-27 16:44:49Z 的密钥 {********-****-****-****-64bb57db1c3b} 作为默认密钥。 dbug:Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiXmlDecryptor[51] 使用 Windows DPAPI 解密秘密元素。 dbug:Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.CngCbcAuthenticatedEncryptorDescriptor[4] 使用链接模式 CBC 从提供者“(null)”打开 CNG 算法“AES”。 dbug:Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.CngCbcAuthenticatedEncryptorDescriptor[3] 使用 HMAC 从提供者“(null)”打开 CNG 算法“SHA256”。 dbug:Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingProvider[2] 使用密钥 {********-****-****-****-64bb57db1c3b} 作为默认密钥。 信息:AspNet.Security.OAuth.Validation.OAuthValidationMiddleware[7] 承载未通过身份验证。失败消息:身份验证失败,因为访问令牌无效。
1)我的资源服务器出了什么问题?
2)如何在不同的机器上配置资源服务器(尤其是令牌签名/检查和加密/解密)?