2015-12-03 4 views
4

Вопрос, связанный с этим постом здесь: Configure the authorization server endpoint.Переопределение TokenEndPoint в AspNet.Security.OpenIdConnect.Server

Используя приведенный выше пример, я могу получить токен. Ранее это было возможно, чтобы получить дополнительную информацию по более чем езда

public override Task TokenEndpoint(OAuthTokenEndpointContext context) 
     { 
      foreach (KeyValuePair<string, string> property in context.Properties.Dictionary) 
      { 
       context.AdditionalResponseParameters.Add(property.Key, property.Value); 
      } 

      return Task.FromResult<object>(null); 
     } 

как вы добиться того, что в текущей реализации

public override Task TokenEndpoint(TokenEndpointContext context){ 
} 

Спасибо!

ответ

2

Ваш лучший вариант - прямое использование события ApplyTokenResponse для обновления полезной нагрузки JSON, возвращаемой клиентскому приложению. В отличие от AdditionalResponseParameters, что позволяет добавлять - или удалить - практически все: объекты, массивы, строки, целые ...

Вот как вы можете сделать это:

public override Task ApplyTokenResponse(ApplyTokenResponseContext context) 
{ 
    // Only add the custom parameters if the response is not a token error response. 
    if (string.IsNullOrEmpty(context.Error)) 
    { 
     context.Response["custom-property-1"] = "custom-value"; 

     context.Response["custom-property-2"] = JArray.FromObject(new[] 
     { 
      "custom-value-1", 
      "custom-value-2" 
     }); 
    } 

    return Task.FromResult(0); 
} 
+0

Merci Ьеаисоир @Pinpoint !. Еще одна вещь, о которой я хотел спросить, это то, что я продолжал получать ошибку 500 серверов, когда пытался получить доступ к ресурсам с помощью метода http.get() от моего углового клиента. очень сложно отлаживать, но я знаю, что это происходит из-за app.UseJwtAuthentication. любая идея, почему она бросает 500, не давая мне возможности отреагировать? – BHR

+0

Pas de quoi! Фактически, ответ 500 - это «ошибка», которая не была исправлена ​​для RC1, но теперь исправлена ​​в ночных сборках: https://github.com/aspnet/Security/issues/411. Чтобы определить, почему промежуточное программное обеспечение для проводника JWT не работает, вы можете включить ведение журнала: http://docs.asp.net/en/latest/fundamentals/logging.html. FYI, основной причиной отказа является параметр 'resources', который не используется: http://stackoverflow.com/a/32801010/542757. – Pinpoint

+0

FYI, мы прекратим использование токенов доступа JWT по умолчанию в следующей бета-версии: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/issues/185. – Pinpoint

Смежные вопросы