【问题标题】:Identity Server 4 endpoints ports not filledIdentity Server 4 端点端口未填充
【发布时间】:2018-04-21 00:49:24
【问题描述】:

规格:

  • .net core 2
  • 身份服务器 4

当我通过 Postman http://127.0.0.1:5000/.well-known/openid-configuration 访问本地开发机器时,我可以找到例如 "jwks_uri",地址为 http://127.0.0.1:5000/.well-known/openid-configuration /jwks

我可以访问 http://127.0.0.1:5000/.well-known/openid-configuration/jwks 并查看如下结果:

{
    "keys": [
        {
            "kty": "RSA",
            "use": "sig",
            "kid": "6ca39c3dd4ffda97d502243e25fa4e54",
            "e": "AQAB",
            "n": "sZthlS0HE1pkbSnMlPyKNDkAqkQryeKG7YSRMeUbrDQARu-9f11iUFUblAdXUhuFRu0R77AQ-mhjy7kfjQMOT58gp3aMa17HTKcMxZRZEi-zcXZuxVA7Q0nuWrWp4_-0VAMV4OhGromZCFtUb26kRJXyKMNlHSM2irSJ9LWnx6NtSkHMrC_kv3kpciZWLx__9DkVM7wmYuGz9DMezoz7-FuwcJcGJHmVz7RNRwGNhdcvEG8nJE3fl8QQ16CjOim2X845gaIc9dWKi1MAA_LS1M2EK4aU8FZjVqgQgY472zrwGtUtwz25aUEZu130fthZabvOiWTDbztuYtOmrxP7BQ",
            "alg": "RS256"
        }
    ]
}

端口5000是最重要的

DEV MACHINE SCREENSHOT

当我通过 Postman http://192.168.168.13:81/.well-known/openid-configuration 访问本地开发机器时,我可以找到例如 "jwks_uri",地址为 http://192.168.168.13/.well-known/openid-configuration/jwks

我无法访问http://192.168.168.13/.well-known/openid-configuration/jwks,因为我收到错误 404:

nginx error!
The page you are looking for is not found.

没有端口81

我可以访问 http://192.168.168.13:81/.well-known/openid-configuration/jwks 并查看如下结果:

{
    "keys": [
        {
            "kty": "RSA",
            "use": "sig",
            "kid": "6ca39c3dd4ffda97d502243e25fa4e54",
            "e": "AQAB",
            "n": "sZthlS0HE1pkbSnMlPyKNDkAqkQryeKG7YSRMeUbrDQARu-9f11iUFUblAdXUhuFRu0R77AQ-mhjy7kfjQMOT58gp3aMa17HTKcMxZRZEi-zcXZuxVA7Q0nuWrWp4_-0VAMV4OhGromZCFtUb26kRJXyKMNlHSM2irSJ9LWnx6NtSkHMrC_kv3kpciZWLx__9DkVM7wmYuGz9DMezoz7-FuwcJcGJHmVz7RNRwGNhdcvEG8nJE3fl8QQ16CjOim2X845gaIc9dWKi1MAA_LS1M2EK4aU8FZjVqgQgY472zrwGtUtwz25aUEZu130fthZabvOiWTDbztuYtOmrxP7BQ",
            "alg": "RS256"
        }
    ]
}

SERVER MACHINE SCREENSHOT

这是我的 Centos 防火墙设置:

 public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports: 80/tcp 443/tcp 81/tcp 82/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

这是我的反向代理的 nginx 配置:

server {
    listen 81;
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

据我调查,问题是在 .well-known/openid-configuration 中服务器机器上没有合适的端口(在这种情况下为 81)。

端点存在,因为当我手动将端口 81 添加到端点时,端点可用。

因为我的应用程序依赖 .well-known/openid-configuration 来自动发现端点,所以我的身份验证不起作用。我不知道问题是在 IdentityServer 4 配置上还是在 Centos 配置上。

【问题讨论】:

    标签: nginx centos identityserver4 asp.net-core-2.0


    【解决方案1】:

    如果有人遇到同样的问题,下面的链接会有所帮助:)

    http://amilspage.com/set-identityserver4-url-behind-loadbalancer/

    特别是这部分:

    app.UseMiddleware

    【讨论】:

    • 非常感谢。我花了一天时间试图找出它为什么不起作用
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 2018-07-19
    • 2019-07-25
    • 2020-01-11
    • 2017-05-12
    • 2014-12-19
    • 2020-03-22
    • 2018-12-04
    相关资源
    最近更新 更多