久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何使 OAuth2 在 .net 上通過多因素身份驗證適用于

How to make OAuth2 work for Azure Active Directory with multi-factor authentication on .net?(如何使 OAuth2 在 .net 上通過多因素身份驗證適用于 Azure Active Directory?)
本文介紹了如何使 OAuth2 在 .net 上通過多因素身份驗證適用于 Azure Active Directory?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我們正在使用 OAuth 2.0Azure Active Directory 上的身份驗證代碼授權 以對我們的 Web 應用程序中的用戶進行身份驗證.

We are using OAuth 2.0 auth code grant on Azure Active Directory to authenticate the users in our web application.

這工作沒有問題,但現在 AD 維護想要部署多因素身份驗證.我們當前的 OAuth 實施與此不符.

This has worked without problems, but now the AD maintenance wants to deploy a multi-factor authentication. Our current OAuth implementation is not in line with that.

這是我們的代碼:

public static ActionResult LogOn()
{
    string authorizationUrl = string.Format(
        "https://login.windows.net/{0}/oauth2/authorize?api-version=1.0&response_type=code&response_mode=query&client_id={1}&scope={2}&redirect_uri={3}",
        HttpUtility.UrlEncode(azureActiveDirectoryTenant),
        HttpUtility.UrlEncode(azureActiveDirectoryClientId),
        HttpUtility.UrlEncode("https://graph.microsoft.com/v1.0/me/"),
        HttpUtility.UrlEncode(azureActiveDirectoryCodeRedirectURL) // refers to Code() below
    );

    return new RedirectResult(authorizationUrl, false);
}

public async Task<ActionResult> Code(string code = null, string state = "", string error = null, string error_description = null)
{
    if (String.IsNullOrEmpty(error))
    {
        if (String.IsNullOrWhiteSpace(code))
        {
            return LogOn();
        }
        AuthenticationContext ctx = new AuthenticationContext("https://login.microsoftonline.com/" + azureActiveDirectoryTenant);
        ClientCredential clcred = new ClientCredential(azureActiveDirectoryClientId, azureActiveDirectoryClientKey);
        try
        {
            var ar = await ctx.AcquireTokenByAuthorizationCodeAsync(code, new Uri(azureActiveDirectoryCodeRedirectURL), clcred, "https://graph.windows.net");
            string email = ar.UserInfo.DisplayableId;

            using (WebClient client = new WebClient())
            {
                client.Headers.Add("Authorization", "Bearer " + ar.AccessToken);

                Stream data = client.OpenRead(new Uri("https://graph.windows.net/me?api-version=1.6"));
                StreamReader reader = new StreamReader(data);
                Dictionary<string, dynamic> values = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(reader.ReadToEnd());
                data.Close();
                reader.Close();

                ... act on values and redirect...
            }
        }
        catch (AdalServiceException ex)
        {
            // We come here!
            ViewBag.ErrorMessage = String.Format("Exception: ErrorCode: {0}, StatusCode: {1}, Message: {2}.", ex.ErrorCode, ex.StatusCode, ex.Message);
            ...
        }
    }
    return View("OAuthError");
}

還有錯誤信息:

ErrorCode: interaction_required, StatusCode: 400, Message: AADSTS50076: Due
to a configuration change made by your administrator, or because you moved to a
new location, you must use multi-factor authentication to access '00000002-0000-
c000-0000000000000'.

本文檔 正在討論 AAD 的條件訪問并提到聲明"作為解決方案.

This document is discussing conditional access on AAD and mentions 'claims' as a solution.

如何將聲明合并到上面的代碼中以使其工作?

How does one incorporate claims to the code above to make it work?

推薦答案

根據 Microsoft 文檔:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-oapx/0fc398ca-88d0-4118-ae60-c3033e396e60

Per Microsoft docs: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-oapx/0fc398ca-88d0-4118-ae60-c3033e396e60

您可以將 amr_values=ngcmfa 添加到授權 URL 以強制執行 MFA.

You can add amr_values=ngcmfa to the authorization URL to force MFA.

您還可以添加 amr_values=mfa 以要求用戶已通過 MFA,盡管它可能在不久前發生.

You can also add amr_values=mfa to require that the user has gone through MFA, though it may have happened a while ago.

您還應該檢查令牌是否包含mfa";在 amr 索賠中.(因為用戶可以刪除參數)

You should also then check that the token does contain "mfa" in the amr claim. (since the user could just remove the parameter)

這篇關于如何使 OAuth2 在 .net 上通過多因素身份驗證適用于 Azure Active Directory?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

ASP.NET Core authenticating with Azure Active Directory and persisting custom Claims across requests(ASP.NET Core 使用 Azure Active Directory 進行身份驗證并跨請求保留自定義聲明)
ASP.NET Core 2.0 Web API Azure Ad v2 Token Authorization not working(ASP.NET Core 2.0 Web API Azure Ad v2 令牌授權不起作用)
ASP Core Azure Active Directory Login use roles(ASP Core Azure Active Directory 登錄使用角色)
How do I get Azure AD OAuth2 Access Token and Refresh token for Daemon or Server to C# ASP.NET Web API(如何獲取守護進程或服務器到 C# ASP.NET Web API 的 Azure AD OAuth2 訪問令牌和刷新令牌) - IT屋-程序員軟件開發技
.Net Core 2.0 - Get AAD access token to use with Microsoft Graph(.Net Core 2.0 - 獲取 AAD 訪問令牌以與 Microsoft Graph 一起使用)
Azure KeyVault Active Directory AcquireTokenAsync timeout when called asynchronously(異步調用時 Azure KeyVault Active Directory AcquireTokenAsync 超時)
主站蜘蛛池模板: 情侣酒店偷拍一区二区在线播放 | 日本在线看 | 伊人电影院av | 成人h视频 | 激情欧美日韩一区二区 | 91精品久久久久久久久 | 国产成人麻豆免费观看 | 在线免费观看欧美 | 黄色成人免费在线观看 | 丁香五月网久久综合 | 亚洲男人的天堂网站 | 国产网站久久 | 日韩在线视频播放 | 老头搡老女人毛片视频在线看 | 欧美一级片久久 | 久久噜噜噜精品国产亚洲综合 | 国产精品视频一区二区三区 | 欧美伊人影院 | 6080yy精品一区二区三区 | 国产欧美日韩在线 | 亚洲精品乱码久久久久久按摩观 | 免费激情网站 | 青青草华人在线视频 | 麻豆视频在线看 | 干出白浆视频 | 日韩成人在线看 | 希岛爱理在线 | 亚洲国产精品一区二区三区 | 欧美一区二区三区四区五区无卡码 | 91精品国产一区二区三区香蕉 | 亚洲电影一区二区三区 | 中文字幕成人在线 | 日韩欧美在| 国产高清一二三区 | 亚洲成人一区 | 黄色小视频入口 | 天天干狠狠操 | 天天天天操 | 成人av播放| 欧美性生活网 | 亚洲国产成人在线 |