首页 > 解决方案 > 在 .NET C# 中使用 MSAL 在 Azure AD B2C 中执行自定义策略流

问题描述

我目前正在使用 OpenIdConnect 为我的 Azure B2C 自定义策略执行 HTTP GET 请求。例如这里是统一的 SignInSignUp:

public static void Unified(HttpRequest Request, HttpResponse Response)
{
    string nonce = "defaultNonce";
    string clientID = ConfigurationManager.AppSettings["aad.clientid"];
    string authUrl = ConfigurationManager.AppSettings["aad.authUrl"];
    string redirectUri = ConfigurationManager.AppSettings["aad.redirecturi"];
    string unifiedPolicy = ConfigurationManager.AppSettings["aad.unifiedPolicy"];

    // build url for AAD auth and redirect to ourself 
    StringBuilder sb = new StringBuilder();
    sb.AppendFormat("{0}?", authUrl);
    sb.AppendFormat("p={0}", unifiedPolicy);
    sb.AppendFormat("&client_id={0}", clientID);
    sb.AppendFormat("&redirect_uri={0}", redirectUri);
    sb.AppendFormat("&nonce={0}", nonce);
    sb.AppendFormat("&scope=openid");
    sb.AppendFormat("&response_type=id_token");
    sb.AppendFormat("&prompt=login");
    sb.AppendFormat("&response_mode=form_post");

    // redirect to auth via AAD (and then redirect back to ourself)
    Response.Redirect(sb.ToString(), true);
}

我想改用 MSAL,但找不到执行 HTTP GET 请求的 C# .NET 示例,就像我使用 OpenIdConnect 所做的那样。我目前的技术可以很好地返回 id_token,但我想利用 MSAL 的缓存等功能。

周围有这样的样本吗?

标签: c#openid-connectazure-ad-b2cmsalpolicies

解决方案


我想将此添加为评论,但系统显示它太长了。所以我想回答我的问题,因为我确实找到了一些示例代码(在我上面对自我的评论中提到)帮助我开始使用~MSAL.net。但是我遇到了许多问题(例如,当我调用我的编辑配置文件自定义策略时,我得到的声明集非常不完整,使用 OpenIdConnect 我得到了所有声明)和问题,并且可能会发布另一个更具体的问题,列出我的要求。我真的只需要 id_token(我在上面发布的 OpenId Connect 代码非常适合),而不是访问或刷新令牌,我真正需要做的就是验证 id_token 并实施 KMSI(让我登录)策略. 我在我的自定义登录策略中添加了 B2C KMSI,但看不到如何在我的 web (asp. 网络表单)网络项目。目前(不使用 Azure)我的网站上有一个“记住我”复选框,我编写了一个 30 天滚动到期的持久 cookie,其中包含加密数据,一切都按要求运行;我正在尝试迁移到 Azure B2C 并保持一切正常。此外,为了验证令牌,我正在使用我在此处的帖子中找到的一些代码,这些代码使用低级代码(System.Security.Cryptography 命名空间)并且验证良好,但我看不到如何验证我看到的文档中推荐的少数声明。因此,我将创建一个新帖子来询问所有这些。谢谢。我网站上的复选框,我编写了一个 30 天滚动到期的持久 cookie,其中包含加密数据,一切都按要求运行;我正在尝试迁移到 Azure B2C 并保持一切正常。此外,为了验证令牌,我正在使用我在此处的帖子中找到的一些代码,这些代码使用低级代码(System.Security.Cryptography 命名空间)并且验证良好,但我看不到如何验证我看到的文档中推荐的少数声明。因此,我将创建一个新帖子来询问所有这些。谢谢。我网站上的复选框,我编写了一个 30 天滚动到期的持久 cookie,其中包含加密数据,一切都按要求运行;我正在尝试迁移到 Azure B2C 并保持一切正常。此外,为了验证令牌,我正在使用我在此处的帖子中找到的一些代码,这些代码使用低级代码(System.Security.Cryptography 命名空间)并且验证良好,但我看不到如何验证我看到的文档中推荐的少数声明。因此,我将创建一个新帖子来询问所有这些。谢谢。看不到如何验证我看到的文档中推荐的少数声明。因此,我将创建一个新帖子来询问所有这些。谢谢。看不到如何验证我看到的文档中推荐的少数声明。因此,我将创建一个新帖子来询问所有这些。谢谢。


推荐阅读