使用.NET C#中的MSAL在Azure AD B2C中执行自定义策略流

使用.NET C#中的MSAL在Azure AD B2C中执行自定义策略流,c#,openid-connect,azure-ad-b2c,msal,policies,C#,Openid Connect,Azure Ad B2c,Msal,Policies,我目前正在使用OpenIdConnect为我的Azure B2C自定义策略执行HTTP GET请求。例如,以下是统一登录: public static void Unified(HttpRequest Request, HttpResponse Response) { string nonce = "defaultNonce"; string clientID = ConfigurationManager.AppSettings["aad.clientid"]; stri

我目前正在使用OpenIdConnect为我的Azure B2C自定义策略执行HTTP GET请求。例如,以下是统一登录:

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_令牌,但我想利用MSAL的缓存等功能


有这样一个示例吗?

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

您是否参考了此文档:?是的,我已经看过了,它有些帮助。今天我发现它也很有用,特别是TaskWebApp/Utils/文件夹中的文件。太棒了。如果你已经找到了你想要的,你可以添加一个答案,这篇文章就可以被关闭。你有没有在没有重定向到b2clogin页面的情况下实现用户登录?