【问题标题】:IdSrv4 - Access Token Validator EndPointIdSrv4 - 访问令牌验证器端点
【发布时间】:2017-04-10 12:11:51
【问题描述】:

我设置了 Identity Server 4 服务器。在身份服务器 3 中,我们有可用的端点,因此我们可以执行以下操作:

POST /connect/accesstokenvalidation

token=<token>

我认为它在身份服务器 4 上是相同的,但我得到了 404 NOT FOUND。然后我输入到:http://my-endpoint.com/.well-known/openid-configuration 并且端点不存在。

我是否应该设置一些东西以使其在身份服务器 4 上可用?

【问题讨论】:

    标签: c# asp.net-core identityserver4


    【解决方案1】:

    Introspection Endpoint

    POST /connect/introspect
    Authorization: Basic xxxyyy
    
    token=<token>
    

    要进行自动化,请使用 HTTP 基本授权流程:组合 &lt;scope&gt;:&lt;scope_secret&gt; 对并将其转换为 Base64 编码字符串(上面示例中的 xxxyyy)。 scope_secret 值可以在 ApiResource 定义中指定:

    new ApiResource("myapi, "My API")
    {
        Scopes = {new Scope("post-myapi")},
        ApiSecrets = new List<Secret> {new Secret("any_string_you_like".Sha256())},
    }
    

    那么,上面的 POST 请求应该返回类似如下的响应:

    {
        "nbf": 1491850954,
        "exp": 1491854554,
        "iss": "api-auth",
        "aud": [
            "api-auth/resources",
            "myapi"
        ],
        "client_id": "foo",
        "scope": "post-myapi",
        "active": true
    }
    

    完整请求(从 Postman 复制):

    POST /connect/introspect HTTP/1.1
    Host: localhost:6000
    Authorization: Basic YXBpLWlzc3VlczpzY29wZVNlY3JldA==
    Content-Type: application/x-www-form-urlencoded
    
    token=.......
    

    【讨论】:

    • 我尝试在邮递员中使用内省端点并收到401 unauthorized,但在我的 api 上测试它,令牌有效。会有什么问题?
    • @FacundoGFlores 您是否已如上所述注册了范围机密?我在 Postman 中成功调用了这个端点,所以我添加了完整的回答请求。
    • 非常感谢!对我来说很难注意到的一点是,当您调用授权时,我需要调用btoa(scopename:secret)(我必须阅读控制台日志)。非常感谢您的帮助!
    • @FacundoGFlores 也谢谢你。我添加了澄清来回答。此外,您可以在 Postman Authorization 选项卡中轻松设置范围名称和密码。它对这一对进行编码并自动添加请求标头。
    猜你喜欢
    • 2018-06-24
    • 2017-12-28
    • 2012-06-05
    • 2015-10-23
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2021-08-24
    • 2019-11-26
    相关资源
    最近更新 更多