2017-11-01 6 views
0

リソース所有者シナリオでIdentity Server 4を使用しています。私は正常にアクセストークンを取得しています。しかし、私はそれも主張を持っていると思います。私はアイデンティティ・サーバーの実装でロール要求を追加しました。しかし私はそれが私のトークンにコード化されているのを見ません。 これは私のAPIリソースである:Identity Serverがaccess_tokenにロール要求を追加します

{ 
    "_id": "SomeAPI", 
    "Enabled": true, 
    "DisplayName": "Some APII", 
    "Description": null, 
    "ApiSecrets": [], 
    "UserClaims": [ 
     "role 
    ], 
    "Scopes": [ 
     { 
      "Name": "SomeAPI", 
      "DisplayName": "Some API, 
      "Description": null, 
      "Required": false, 
      "Emphasize": false, 
      "ShowInDiscoveryDocument": true, 
      "UserClaims": [ 
       "role" 
       ] 
     } 
    ] 
} 

これが問題になっている私のクライアントである:

var result = await client.RequestResourceOwnerPasswordAsync(userName, password); 

編集: 私は更新され、私はトークンを取得する方法

{ 
    "Enabled": true, 
    "ClientSecrets": [ 
     { 
      "Description": null, 
      "Value": "-----", 
      "Expiration": ----, 
      "Type": "SharedSecret" 
     } 
    ], 
    "ClientName": null, 
    "ClientUri": null, 
    "LogoUri": null, 
    "RequireConsent": true, 
    "AllowRememberConsent": true, 
    "AllowOfflineAccess": true, 
    "AccessTokenLifetime": 10000.0, 
    "AllowedGrantTypes": [ 
     "password" 
    ], 
    "AllowedScopes": [ 
     "SomeAPI" 
    ], 
    "Claims": [], 
    "AllowedCorsOrigins": [] 
} 

この提案された回答に従って電話をかけてください:

var result = await client.RequestResourceOwnerPasswordAsync(userName, password, "SomeAPI") 

また、クライアントを 'roles'の許容範囲で更新しました。今、私は必要なロールを取得しなくて特許請求の範囲の下にネストされていないのではなく、この種の配列としています:

"http://schemas.microsoft.com/ws/2008/06/identity/claims/role": [ 
"role1", 
"role2" 

]、

+0

アクセストークンを取得したコードを表示できますか? –

+0

こんにちは。これを試していただきありがとうございます。私は編集して追加しました – Moutabreath

+0

ロール配列について:この出力をどのように生成しましたか、探していますか? –

答えて

0

をあなたはスコープを含める必要があります:

var result = await client.RequestResourceOwnerPasswordAsync(userName, password, "SomeAPI"); 
+0

エラーが発生します。それはアイデンティティサーバーの検証コードにも入りません – Moutabreath

+0

あなたはエラーについてより具体的になりますか? –

+0

要求されたスコープは許可されていません – Moutabreath

関連する問題