簡體   English   中英

將 Azure AD B2C 與機器人結合使用

[英]Using Azure AD B2C with Bot

我在 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());

機器人正確顯示卡,當我單擊它時,它會打開帶有正確提供程序的瀏覽器,效果很好(我可以登錄和注冊)。

最后,我有一個 Web API,其中LoginController映射到我的返回 URL (即 localhost:3980/api/login)。

為了驗證返回 URL 是否被調用,我在LoginControl.Get放置了一個斷點:

public class LoginController : ApiController
{
    [HttpGet]
    public IHttpActionResult Get()
    {
        return Ok();     //The breakpoint here is hit!
    }
}

登錄后,Get 方法在斷點被命中時被調用,但是接下來會發生什么? 我不知道如何繼續。

我發現的唯一想法是,Azure B2C AD 使用如下 URL 調用LoginController.Get方法:

http://localhost:3980/api/login#id_token=eyJ0eXAi ...

我猜是那個 URL 被調用,因為它顯示在我瀏覽器的地址欄中。

所以,它正在發送一個叫做“id_token”的東西,但在 Controller.Get 方法中,我似乎無法訪問它。

id_token 是什么? 如何獲得?

AuthBotBotAuth是包含身份驗證實現方法的示例。

您必須使用 Graph Api 來使用從身份驗證器服務接收的令牌獲取用戶原則(更具體到 Azure Active Directory)。 令牌將在您在 AAD 應用程序中配置的回調 url 中接收。

在示例中,您將獲得用戶身份驗證的完整實現。

希望這會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM