locked
Alterar JSON de retorno do OAuth quando autenticado. RRS feed

  • Pergunta

  • Boa tarde a todos,

    Estou criando uma validação de login utilizando OAuth. Está funcionando normalmente a rotina que desenvolvi. E JSON com o Token que me retorno na requisição é o abaixo :

    {
      "access_token": "",
      "token_type": "",
      "expires_in": 0
    }

    Gostaria de adicionar um objeto a mais nesse JSON para que ficasse da seguinte forma:

    {
      "access_token": "",
      "token_type": "",
      "expires_in": 0,

       "usuarioRetorno":

        {

    "usu_id" : 1,

    "usu_nome": "teste"

        }

    }

    Vi que o JSON é montando nesse método e trecho de código abaixo:

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
            {
                context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

                usuarioRetorno user = new usuarioRetorno();

                using (AuthRepository _repo = new AuthRepository())
                {
                    user = await _repo.FindUser(context.UserName, context.Password);

                    if (user == null)
                    {
                        context.SetError("invalid_grant", "The user name or password is incorrect.");
                        return;
                    }
                }

                var identity = new ClaimsIdentity(context.Options.AuthenticationType);
                identity.AddClaim(new Claim("sub", context.UserName));
                identity.AddClaim(new Claim("role", "user"));

                context.Validated(identity);
            }

    Em que momento eu poderia acessar esse json e adicionar esse meu objeto desejado?

    Alguém tem alguma ideia que poderia me ajudar?

    Obrigado.


    • Editado Rafael_Oliveira_CC segunda-feira, 2 de novembro de 2015 18:14 correção código
    segunda-feira, 2 de novembro de 2015 18:14

Respostas

  • Bom dia,

    Na verdade trabalhar com Session também não resolveria meu problema.

    Encontrei a solução para o que precisava no link abaixo, ele adiciona outro JSON no JSON de retorno do Token conforme eu precisava.

    http://stackoverflow.com/q/26357054/3625265

    Obrigado.

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:00
    segunda-feira, 9 de novembro de 2015 10:01

Todas as Respostas

  • Olá Rafael_Oliveira_CC,

    tudo bem?

    Já fez alguma tentativa já pode ser descartada pelos usuários da comunidade ao tentarem te auxiliar com a solução?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 3 de novembro de 2015 16:50
  • Boa noite Marcos Roberto de Souza Junior,

    Na verdade até o momento o que eu fiz foi analisar a variável "identity" e o objeto "context" para ver se existia algum lugar que recebesse um "Data (dados)" para que eu pudesse adicionar meu objeto "user". Mas não obtive sucesso nisso.

    Outra alternativa que quero testar é sobrescrever esse método, para tentar de alguma forma seila alterar esse objeto. Mas ainda não sei como fazer e na verdade acho que nem vai dar certo.

    Fiz algumas pesquisas mas sem sucesso.

    terça-feira, 3 de novembro de 2015 23:00
  • Bom dia,

    Se para você o método está "inacessível", porque você não cria um "Session" para conseguir recuperar essa informação a onde desejar.

    Segue a referencia sobre isso, mas basicamente você cria o mesmo assim: Trabalhando com session

    Session["nomeSession"] = "valorSession"; 

    Atenciosamente, Roberto Alves




    • Marcado como Resposta Marcos SJ quinta-feira, 5 de novembro de 2015 11:49
    • Não Marcado como Resposta Rafael_Oliveira_CC segunda-feira, 9 de novembro de 2015 10:01
    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:00
    • Não Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 12:06
    quinta-feira, 5 de novembro de 2015 10:58
  • Bom dia,

    Na verdade trabalhar com Session também não resolveria meu problema.

    Encontrei a solução para o que precisava no link abaixo, ele adiciona outro JSON no JSON de retorno do Token conforme eu precisava.

    http://stackoverflow.com/q/26357054/3625265

    Obrigado.

    • Marcado como Resposta Marcos SJ segunda-feira, 9 de novembro de 2015 11:00
    segunda-feira, 9 de novembro de 2015 10:01