如何使用identityserver4

时间:2017-07-26 02:42:41

标签: asp.net asp.net-identity identityserver4

我有IdentityServer和一个使用资源所有者流的单独的WebApi项目。

当我请求下面的令牌时,会发出令牌并可用于访问WebApi。所以我假设IdentityServer设置正确,WebApi项目也正确设置。

username=user1
password=user1password
grant_type=password
client_id=myClientId
client_secret=myClientSecret
scope=api1

现在,当我将授权类型更改为refresh并将范围更改为offline_access时,我获得了刷新令牌。然后我使用刷新令牌来获取访问令牌,但是当我使用访问令牌请求WebApi时,它被拒绝。

出错

the audience is invalid

我怀疑它是因为我要求一个offline_access范围而不是WebApi项目所期望的api1范围。如何获得可与范围api1一起使用的刷新令牌?

1 个答案:

答案 0 :(得分:1)

 var model =       {
                    client_id: "myClientId",
                    client_secret: "myClientSecret",
                    scope: "api1 offline_access",
                    token_type: "Bearer", //Optional
                    grant_type: "refresh_token",
                    refresh_token: "your refresh token"
                };


//this is most important step when to use refresh token 

 var base64 = btoa(model.client_id + ":" + model.client_secret); 

//and your request here

this.$http({
                method: "POST",
                url: "/connect/token",
                headers: {
                    'content-type': "application/x-www-form-urlencoded",
                    'Authorization': "Basic " + base64
                },
                data: jQuery.param(model)
            })
                .then(
                response => {


                  //success


                },
                response => {

                    //logout
                });