我试图做一个Azure AD Graph API REST API调用来获取当前登录的用户信息。但是,对https://graph.windows.net/me?api-version=1.6的HTTP GET调用总是失败,响应401未经授权。我已经在Azure AD中注册了一个应用程序,并配置了以下API权限:
授权endpoint的调用如下所示:
HTTP GET https://{my tenant}.b2clogin.com/{my tenant}.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1_signinsignup&client_id={my app id}&nonce=defaultnonce&redirect_uri=https://localhost:44351/login/loginresponse&scope=https://graph.windows.net/directory.accessasuser.all
对令牌endpoint的调用如下所示:
HTTP POST到URL:https://{my tenant}.b2clogin.com/{my tenant}.onmicrosoft.com/b2c_1_signinsignup/oauth2/v2.0/token内容类型:application/x-www-form-urlencoded
身体:
string strURL = @"https://graph.windows.net/me?api-version=1.6";
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(strURL);
httpWebRequest.Headers.Add("Authorization", $"Bearer {jWTToken.access_token}");
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string str = streamReader.ReadToEnd();
}
}
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"iss": "https://{my tenant}.b2clogin.com/fc292353-4def-47bd-af44-b92e40798a60/v2.0/",
"exp": 1576642155,
"nbf": 1576638555,
"aud": "00000002-0000-0000-c000-000000000000",
"oid": "05c93456-2f02-4601-afb0-d4599b7e6826",
"sub": "05c93456-2f02-4601-afb0-d4599b7e6826",
"tfp": "B2C_1_signinsignup",
"nonce": "defaultNonce",
"scp": "Directory.AccessAsUser.All User.Read",
"azp": "{my app ID}",
"ver": "1.0",
"iat": 1576638555
}.[Signature]
B2C不支持对图形API的委托访问。您必须向应用程序注册添加应用程序权限,并使用客户端凭据身份验证来获得令牌。
参见文档:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet?tabs=applications#assign-api-access-permissions
在应用程序权限下,选择读取和写入目录数据。
从底层Azure Ad的令牌endpoint(而不是您的B2C策略endpoint)获取令牌。
当然,您不能使用/me
,因为该令牌不包含用户信息。但是可以使用/users/id
。
401的原因可能是令牌中的发行方。Graph API期望使用普通的AAD发行器,但事实并非如此。
感谢您提供的任何指示/示例。
我需要在旧的WEBFORMS应用程序(不是MVC应用程序)中实现Azure AD b2c。我按照说明进行操作,并通过运行此示例验证Azure AD B2C配置。之后,我将所有适用的NuGet添加到我的旧WEBFORMS应用程序中,并复制相应的代码。我在调用质询方法时遇到了一个异常。当我查看网络跟踪时,我看到了一个额外的“?”在客户端id之前的身份验证URL上 由样例生成的URL是: "https:
Azure AD B2C租户 域名:myTenantName.onmicrosoft.com 应用程序: 应用程序A-API WebApp/API:是 允许隐式流:是 回复Url:https://myazurefunsapi.azurewebsites.net/.auth/login/aad/callback 应用程序ID:https://mytenantname.onmicrosoft.com/
我们希望将Azure ADB2C用于Web应用程序,以允许用户使用其公司ADFS帐户登录。 根据Azure Active Directory B2C:使用自定义策略将ADF添加为SAML身份提供程序: “与ADFS帐户联合需要ADFS帐户的客户端机密,才能代表应用程序信任Azure AD B2C。您需要将ADFS证书存储在Azure AD B2C租户中。” 这意味着我们需要将他们的. pfx证书(
我正在为注册和登录过程集成Azure Active目录B2C。默认情况下,当用户单击登录按钮时,它必须将用户重定向到不同的域(microsoftonline.com),以便注册和登录页面的URL采用以下格式: https://login.microsoftonline.com/te/tenant-name.onmicrosoft.com/b2c_1_signupsignin1/oauth2/v2.
我有一个在Azure网站上运行的标准Web API,启用了Azure AD身份验证,当在浏览器中浏览API时,我可以通过浏览器登录并获得对API的访问权。 但是,WPF桌面应用程序在提交请求时接收到未经授权的响应: 更新: 我已经在一个Azure帐户中重新创建了这个环境,我可以访问这个帐户,但仍然收到一个未经授权的响应(在浏览器中运行良好)。
我正试图加载Admob原生广告。以前(在应用程序更新之前)广告经常显示,但现在它们不显示了。我已经在下面发布了代码、xml和Logcat。 代码 洛克卡特
我需要得到以下Azure广告B2C用户的详细信息- 创建日期用户帐户 上次登录 用户处于活动状态或非活动状态 我已经研究了Azure AD graph API(Get-User),但它抛出了一些异常。https://docs.microsoft.com/da-dk/azure/active-directory-b2c/active-directory-b2c-devquickstarts-grap