以前曾经问过这个问题,但我完全陷入困境,到目前为止,对于我已经在其他问题中列出的任何内容都没有。虽然这是指Identity Server,但我认为我在设置SSL时错过了一些东西。
我的设置如下(这是IIS表示不完整的IIS):
我在标题上收到错误:
app.UseIdentityServerBearerTokenAuthentication(options);
这基本上是从auth.testhost.com:44373/core/.well-known/openid-configuration服务器请求一些开放配置选项。
我的选择是:
Authority = "https://auth.testhost.com:44373/core",
RequiredScopes = new List<string>() { "api" }
在某些示例中,我看到了客户端ID和密码,但它们在我的选项中不可用:这是一个问题吗?
如果您需要查看任何身份服务器选项,请说明并且我会发布。 我运行以下命令来创建证书:
makecert.exe -r -pe -n "CN=auth.testhost.com" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -len 2048
这会生成证书,然后我将其导出到受信任的根证书颁发机构。
据我所知,SSL端口绑定应由Visual Studio处理,因为我正在使用IIS Express。以下是它具有的绑定:
<site name="Authenticator_V2" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\user\documents\visual studio 2015\Projects\Authenticator_V2\Authenticator_V2" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:49755:localhost" />
<binding protocol="https" bindingInformation="*:44373:localhost" />
<binding protocol="https" bindingInformation="*:44373:auth.testhost.com" />
</bindings>
</site>
<site name="APIClient2" id="7">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\user\documents\visual studio 2015\Projects\Authenticator_V2\APIClient2" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:53812:localhost" />
<binding protocol="https" bindingInformation="*:44356:localhost" />
</bindings>
</site>
这是我的主人档案:
127.0.0.1 localhost
127.0.0.1 hybrid.testhost.com
127.0.0.1 auth.testhost.com
当我去https://auth.testhost.com:44373/时,我的协议仍然有一条红线。我认为这意味着还没有正确配置的东西。我使用的是Chrome,点击证书即可:
"Your connection to this site is not private."
详细说明:
SHA-1 Certificate
The certificate for this site expires in 2017 or later, and the certificate chain contains a certificate signed using SHA-1.
View certificate
Certificate Error
There are issues with the site's certificate chain (net::ERR_CERT_COMMON_NAME_INVALID).
我查看了ERR_CERT_COMMON_NAME_INVALID错误,似乎是一个Chrome错误。但是我的错误是从尝试连接到身份验证服务器的Web服务服务器抛出的,所以我想我可以忽略这一个???
我还运行netsh检查是否设置了证书绑定:
netsh http show sslcert ipport=0.0.0.0:44373
SSL Certificate bindings:
-------------------------
IP:port : 0.0.0.0:44373
Certificate Hash : HAS ODD HASH - REMOVED
Application ID : {HAS GUID - REMOVED}
Certificate Store Name : MY
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
Reject Connections : Disabled
此时注意到这个哈希值不是我证书的正确哈希值。它适用于IIS Express localhost。我找到了这个链接:IdentityServer: The remote certificate is invalid according to the validation procedure并复制了将localhost证书移动到受信任的根证书颁发机构的步骤,但遗憾的是我仍然有错误。我现在不知道还能做什么。
范围配置:
new Scope
{
Name = "api",
DisplayName = "Can call API",
Enabled = true,
Type = ScopeType.Resource
//ScopeSecrets = new List<Secret> { }
}
我的所有客户都有此范围。
由于
答案 0 :(得分:1)
通过将除IdentityModel.Jwt以外的所有版本升级到最新版本来修复此问题,该版本提供了在承载选项上设置证书和颁发者名称的选项。这两个都需要设置为错误消失