IdentityServer3 - 使用混合流发布访问令牌请求?

时间:2017-12-20 11:52:17

标签: authentication oauth-2.0 identityserver3 hybridauth oidc

这是一项非常简单的任务,但由于我对OIDC和安全性也很陌生,这让我很困惑。

我有IdentityServer3的实例和在服务器上创建的客户端。它利用混合流。我知道它是隐式代码流和auth代码流之间的东西,所以我假设我可以使用authorization_code或隐式授权类型,但显然不是。如何通过邮递员获取访问令牌?

我目前的要求:

  • client_id:sch
  • client_secret:testKey
  • grant_type:authorization_code
  • 范围:openid个人资料offline_access电子邮件

我目前的回应: {

"error": "invalid_scope"

}

提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否为客户指定了 AllowedScopes

AllowedScopes = new List<string>
{
    "openid", "profile", "otherScopes"
}

或者您现在可以只允许所有范围

AllowAccessToAllScopes = true

要从Postman获取访问令牌,您需要先为邮递员设置客户端,为其使用AuthorizationCode Flow

new Client
{
    ClientName = "Postman",
    ClientId = "postman",
    Flow = Flows.AuthorizationCode,
    AccessTokenLifetime = 43200,
    RedirectUris = new List<string>
    {
        "https://www.getpostman.com/oauth2/callback"
    },
    ClientSecrets = new List<Secret>
    {
        new Secret("secret".Sha256())
    },
    AllowAccessToAllScopes = true
    RequireConsent = false
}

现在在Postmant中抓取令牌

  • 转到“授权”标签
  • 选择类型OAuth 2.0
  • 点击获取新访问令牌按钮
  • 填写这些字段
  • 点击请求令牌

验证网址:https://yourIdenityServerAddress/identity/connect/authorize

令牌网址:https://yourIdenityServerAddress/identity/connect/token

enter image description here