Я создал бота в Azure, который использует SignInCard, чтобы дать пользователям возможность войти в систему или зарегистрироваться в качестве клиентов. Это SignInCard, который у меня сейчас есть:
messageActivity.Attachments.Add(new SigninCard()
{
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = "Log in here",
DisplayText = "Log in here",
Value = "https://login.microsoftonline.com/XXXXXXXX.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_SiUp&client_id=XXXXX-XXXX-XXXX-XXXX-XXXXXXXd&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A3980%2Fapi%2Flogin&scope=openid&response_type=id_token&prompt=login",
Text = "Sign in/Register",
Type = ActionTypes.Signin,
}
}
}.ToAttachment());
бот правильно показывает карту, и когда я нажимаю на него, он открывает браузер с правильными поставщиками, которые отлично работают (я могу войти в систему и зарегистрироваться).
С моей стороны, у меня есть веб-API с LoginController, сопоставленным с моим Вернуть URL (то есть localhost: 3980 / api / login).
Чтобы убедиться, что вызывается Return Url, я поставил точку останова в LoginControl.Get:
public class LoginController : ApiController
{
[HttpGet]
public IHttpActionResult Get()
{
return Ok(); //The breakpoint here is hit!
}
}
После входа в систему при достижении точки останова вызывается метод Get. Но что будет дальше? Я не знаю, что делать дальше.
Единственное, что я обнаружил, это то, что метод LoginController.Get вызывается Azure B2C AD с таким URL-адресом:
http: // локальный: 3980 / api / логин # id_token = eyJ0eXAi ...
Я предполагаю, что это тот URL-адрес, который вызывается, потому что он отображается в адресной строке моего браузера.
Итак, он отправляет нечто под названием «id_token», но внутри метода Controller.Get я не могу получить к нему доступ.
Что за id_token? Как его получить?
@ChrisPadgett Я помещаю этот URL-адрес, и открывается белая страница с текстом «Неверный запрос»
Играя, я установил URL-адрес перенаправления на URL-адрес моего веб-API, который сопоставляется с контроллером с именем LoginController: URL-адрес, который я установил, следующий => локальный: 3980 / api / логин В LoginController я установил точку останова в методе Get (HttpGet). После входа в систему достигается точка останова. URL-адрес такой: localhost: 3980 / api /… .... как мне с этим справиться? Он поставляется с id_token.
@ChrisPadgett Я обновил вопрос своими последними выводами. Я надеюсь, что вы можете мне помочь. Заранее спасибо!
Отвечает ли это на ваш вопрос? как заставить Azure Active Directory B2C работать с Bot Framework?





AuthBot, а также BotAuth являются примерами, которые содержат подходы к реализации аутентификации.
Вы должны использовать Graph Api для получения пользовательских принципов с использованием токена, полученного от службы аутентификации (более конкретно для Azure Active Directory). Токен получит URL-адрес обратного вызова, который вы настроили в приложении AAD.
В примерах вы получите полную реализацию аутентификации пользователя.
Надеюсь, что это поможет вам.
Что, если вы добавите этот URI перенаправления в свое приложение Azure AD B2C, а затем используете его со свойством
CardAction.Value:https://token.botframework.com/.auth/web/redirect?