Azure ad b2c 带有AAD B2C的MSAL客户端凭据

Azure ad b2c 带有AAD B2C的MSAL客户端凭据,azure-ad-b2c,msal,Azure Ad B2c,Msal,我想允许B2C安全应用程序的用户在决定注册之前进行浏览 为此,我需要在我的应用程序中嵌入一个客户端凭据流 我只能找到处理Graph API的示例,它是在我的AAD中保护的API的无效标记 是否有人能够修改下面的示例,以指示下面关于b2clogin的客户端凭据参数是什么样子,以便向其传递应用程序ID和密码,并返回可用于授权API调用的令牌 编辑:这就是我现在传递给你的,试图获得一个我可以使用的令牌 public static string tenantID = "aadtenant.onm

我想允许B2C安全应用程序的用户在决定注册之前进行浏览

为此,我需要在我的应用程序中嵌入一个客户端凭据流

我只能找到处理Graph API的示例,它是在我的AAD中保护的API的无效标记

是否有人能够修改下面的示例,以指示下面关于b2clogin的客户端凭据参数是什么样子,以便向其传递应用程序ID和密码,并返回可用于授权API调用的令牌

编辑:这就是我现在传递给你的,试图获得一个我可以使用的令牌

    public static string tenantID = "aadtenant.onmicrosoft.com";
    public static string ClientID = "xxxx-a2e2-40f5-958b-dc39ca2bd413";
    public static string Secret = "zzzzzzzzs_JhPY1HSFEREgRy5Z2rcL";
    public static string redirectURI = "https://mysite.azurewebsites.net/api";
    public static string[] scopes = new string[] { "api://xxxxxx-a2e2-40f5-958b-dc39ca2bd413/.default" };
    public static string url = String.Format("https://login.microsoftonline.com/{0}/oauth2/v2.0/token", tenantID);
但是,这返回一个失败

Exception AADSTS50059: No tenant-identifying information found in either the request or implied by any provided credentials.
我注意到的一件事是,当我在我的AAD租户应用程序中设置API访问权限时,只分配了图形。当我去看我的API时,我什么也看不到。因此,我不确定AAD应用程序和B2C应用程序之间到底有何关联


另一个编辑:我现在已经从AAD应用程序向B2C应用程序授予了权限,并创建了一个作用域,但我仍然收到一个错误,这次该作用域无效

上次我对使用B2C的API实施客户端凭据身份验证时, 实际上,我必须向API添加第二个身份验证方案。 我在B2C租户的基础Azure广告中注册了一个应用程序, 在那里注册申请许可(批准), 然后可以将其分配给客户端应用程序(也需要在底层AAD租户中注册)

然后API需要能够验证来自B2C注册的作用域的两个访问令牌, 或者使用AAD注册的应用程序权限(角色)。 发行人等在这些代币方面有所不同

坦白说,这有点痛苦,但这基本上是医生们建议的:

尽管Azure AD B2C当前不支持客户端凭据流,但您可以使用Azure AD设置客户端凭据流。Azure AD B2C租户与Azure AD企业租户共享一些功能。使用Azure AD B2C租户的Azure AD功能支持客户端凭据流


完成所有设置后,您的客户机需要使用AAD注册客户机id+密码,范围设置为
api客户机id/。默认值

上次我对使用B2C的api实施客户机凭据身份验证时, 实际上,我必须向API添加第二个身份验证方案。 我在B2C租户的基础Azure广告中注册了一个应用程序, 在那里注册申请许可(批准), 然后可以将其分配给客户端应用程序(也需要在底层AAD租户中注册)

然后API需要能够验证来自B2C注册的作用域的两个访问令牌, 或者使用AAD注册的应用程序权限(角色)。 发行人等在这些代币方面有所不同

坦白说,这有点痛苦,但这基本上是医生们建议的:

尽管Azure AD B2C当前不支持客户端凭据流,但您可以使用Azure AD设置客户端凭据流。Azure AD B2C租户与Azure AD企业租户共享一些功能。使用Azure AD B2C租户的Azure AD功能支持客户端凭据流


完成所有设置后,您的客户机需要使用AAD注册客户机id+密码,范围设置为
api客户机id/。默认值

我已经尝试通过该指南进行操作。我已经完成了它要求的一切,现在正试图在Postman中生成一个令牌。请您澄清URL的作用域格式,因为我会收到MSAL错误,这些错误可能表示未找到资源主体,或者未传递租户标识符(取决于我传递的URL)@junnas注意,只有当我将图形URI更改为我创建的AAD应用程序所需的URI时,才会发生错误,为了返回可用于访问B2C应用程序的令牌,您需要将令牌请求发送到
https://login.microsoftonline.com/your-b2c-tenant-guid/oauth2/v2.0/token
。你可以在Azure门户中的Azure Active Directory->Properties中找到租户GUID。我已经在这样做了-我的问题与范围值相关。当我使用graph时,我只能得到一个令牌,这对我没有用,上面你说要输入客户端ID+“/”默认值“,但我只想知道完整的URL到底是什么样子,因为我尝试的一切(除了graph)都会导致错误。话虽如此,graph是我的AAD应用程序拥有权限的唯一API-当我授予API权限并选择我的API时,我得到“未找到”的结果。范围可能是例如
187f0772-e44f-429b-a310-6712cd659f35/。默认值
。或者,如果您的应用程序具有应用程序ID URI,则可以使用该+'/.default'。但这两个都应该是有效的。我已经试着用我的方法来阅读那个指南。我已经完成了它要求的一切,现在正试图在Postman中生成一个令牌。请您澄清URL的作用域格式,因为我会收到MSAL错误,这些错误可能表示未找到资源主体,或者未传递租户标识符(取决于我传递的URL)@junnas注意,只有当我将图形URI更改为我创建的AAD应用程序所需的URI时,才会发生错误,为了返回可用于访问B2C应用程序的令牌,您需要将令牌请求发送到
https://login.microsoftonline.com/your-b2c-tenant-guid/oauth2/v2.0/token
。你可以在Azure门户中的Azure Active Directory->Properties中找到租户GUID。我已经在这样做了-我的问题与范围值相关。当我使用graph时,我只能得到一个令牌,这对我没有用,上面你说要输入客户端ID+“/”默认值“,但我只想知道完整的URL到底是什么样子,因为我尝试的一切(除了graph)都会导致错误。话虽如此,图表是th