Concessão de senha do proprietário do recurso OAuth2 via API

No momento, estou criando uma API que requer OAuth2, mas não consigo encontrar uma biblioteca para usar que lide com o logon único em um aplicativo móvel nativo apenas pela API RESTful. A maioria das que encontrei tem apenas um pop-up da Web, que foi vetado para este projeto. B2C, que está atualmente funcionando, não é capaz de usar o ROPG. Existe uma maneira de configurar isso facilmente com outra biblioteca usando C # .NET e Azure?

ATUALIZAR:

Tentando usar a resposta B2C por Fei Xue abaixo, chegamos ao ponto de obter um token de acesso do Microsoft Graph. No corpo do POST, fizemos o seguinte:

resource = https% 3A% 2F% 2FGraph.windows.net & client_id = [Configurações B2C - Aplicativos - AppId] & grant_type = senha e nome de usuário = senha e nome de usuário = rob% 40 [inquilino] .onmicrosoft.com & password = [senha] & client_secret = [Configurações B2C - Aplicativos - Chave do aplicativo - client_secret]

Nosso erro no espaço para nome foi devido aos nomes de usuários que estávamos tentando. Este é um inquilino B2C que usa email como nome de usuário e esse foi o motivo do erro no espaço para nome. A única maneira de superar esse erro foi criar um usuário B2C com o endereço de e-mail terminado no inquilino, assim:

rob @ [inquilino] .onmicrosoft.com

Estamos recebendo um token de acesso agora, mas esse token não se autentica com nosso aplicativo api do Azure App Service, que era o objetivo original.

O que estamos tentando realizar é enviar o nome de usuário e a senha válidos para um login B2C e obter um IdToken ou Token de Acesso válido para o aplicativo api. O aplicativo da API se conecta ao B2C por meio das configurações de Autenticação do serviço de aplicativo definidas para o AAD com o ID do cliente e a configuração secreta do aplicativo de configurações do B2C.

ATUALIZAR:

Tentando passar pelo token graph.windows.net para autenticação em nossa API da Web do Azure, adicionamos ohttps://Graph.windows.net público de token permitido em nossa configuração Serviço de Aplicativo - Autenticação - Autenticação do Active Directory.

No entanto, passar o token de acesso ao gráfico no cabeçalho Bearer para a API ainda resulta em

"A autorização foi negada para esta solicitação".

Descobrimos que, se deixarmos o URL do emissor em branco, como no exemplo abaixo, ele agora aceita o token Graph!

No entanto, isso causa problemas ao tentar acessar

https: // [our_web_app] .azurewebsites.net / .auth / login / aad

Agora ele vai para o logon comum da Microsoft. Anteriormente, direcionava para a nossa política de inscrição no B2C porque o URL do emissor estava definido para:

https://login.microsoftonline.com/[tentennamenamed.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=[B2C_SignUpIn_Policy]

De fato, se também puxarmos a política de dentro do nosso aplicativo (que estava funcionando antes de remover o URL do emissor) para a política de entrada, poderemos entrar, mas o token de acesso retornado agora sempre volta como não autorizado na API da web chamadas.

O URL do emissor deve ser deixado em branco?

Além disso, como deixou o URL do emissor em branco, o servidor leva muito mais tempo para responder às chamadas da API quando enviamos uma solicitação usando um token de acesso ao gráfico no Portador de autorização de cabeçalho. Passou de 1 a 2 segundos (usando um token de acesso B2C válido obtido da MSAL ou do logon da web acima) e de 10 a 15 segundos para responder que se trata de uma solicitação autenticada. Esse tipo de velocidade é uma barreira para nós.A validação de uma chamada de gráfico dessa maneira normalmente leva tanto tempo?

questionAnswers(4)

yourAnswerToTheQuestion