我已在 Azure AD Premium 中设置了一个应用程序,并进行了访问该应用程序所需的用户分配。我已将自定义应用程序角色添加到应用程序清单中。我可以为应用程序分配具有角色的用户。
如何获得分配给应用程序的所有用户及其分配的角色的列表?
使用 Azure AD B2C 时,从表面上看,我有一个简单的要求。我在 Azure AD B2C 中注册了两个应用程序(App A 和 App B)。我想限制访问,以便用户 1 可以访问应用程序 A 和应用程序 B,但用户 2 应该只能访问应用程序 A。
我可以注册 appRoleAssignments 并通过 Azure AD Graph API 将它们分配给一个用户,按照这个问题使用 0 id当用户登录时,我可以查询这些并限制自己的访问,但感觉就像我在重新发明轮子这应该由 B2C 提供。
这是 Azure AD B2C 能够开箱即用的功能吗?
我在 Azure AD 中创建了用户,并在 Microsoft graph api 的帮助下尝试更改用户的密码,但收到错误消息,因为需要管理员权限。感谢帮助
我正在使用 Azure AD OAuth2 授权来保护我的 Web API。现在我需要支持两个 OAuth2 场景(流程)-
Web 应用程序访问 Web API,基于用户角色的 API 将为资源提供服务。这是使用授权 oauth 流程实现的,并且使用 Authorize[Role="Read"] 属性完成访问控制
访问相同 Web API 的守护程序(控制台)应用程序。虽然我能够通过使用客户端凭据 oauth 流获取令牌,但我无法弄清楚如何管理对守护进程的访问
一旦令牌发出,控制台就可以访问任何 API 方法。
范围 - 当 grant_type 为“client_credentials”时,范围不是 /token 端点角色的参数 - 不能使用它,因为它与用户相关联
有人可以建议,我们如何在客户端凭据流中进行访问控制?以及我如何同时满足要求 1 和 2
oauth-2.0 asp.net-web-api azure-active-directory azure-ad-graph-api
我正在尝试从 .Net Core 应用程序添加带有Microsoft Graph API的备用电子邮件。
userMicrosoft Graph 中的类不提供用于添加额外邮件 ID 的属性。
我正在尝试使用 Graph API 创建用户。用户 json 对象如下所示。我创建了一个名为Role. 因此,在创建用户时,我也需要为此赋予一些价值Role。但是,如果我包含此自定义属性,则会出现错误。
一个或多个属性无效
如果我不指定此自定义属性,则创建用户成功。
var jsonObject = new JObject
{
{"accountEnabled", true},
{"country", "India"},
{"creationType", "LocalAccount"},
{"givenName","given"},
{"surName","surname"},
{"extension_Role","Admin"},
{"displayName","test12@xxx.com"},
{"passwordPolicies", "DisablePasswordExpiration,DisableStrongPassword"},
{"passwordProfile", new JObject
{
{"password", "Password@12"},
{"forceChangePasswordNextLogin", false}
} },
{"signInNames", new JArray
{
new JObject
{
{"value", "test12@xxx.com"},
{"type", "emailAddress"}
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
extension_Role是抛出错误的属性。我试着给extension_appId_Role。它给出了一个不同的错误说
不存在具有此名称的扩展属性
我想我们不能在创建用户时添加自定义属性。只有我们可以使用编辑配置文件更新它们。如果我错了,请纠正我。我加入这个自定义属性sign-up与edit-profile政策和主张。
注意:我授予了图形 API 的适当权限,并在 App Registration 门户中注册了一个应用程序。
答: 我找到了答案。但不确定这是否是正确的行为。我可以在附加b2c-extensions-app应用 id时插入自定义属性。我在下面注册了一个单独的应用程序,App Registrations …
我想查询 Azure AD Graph API 以从注册的 Azure B2C 应用中检索登录用户的组声明。我正在调用的应用程序是 Angular 5 SPA。
在试用 Azure Active Directory 和 adal-angular4 后,我成功检索了用户的自定义角色 claim。为此,我注册了一个 Azure AD 应用程序,设置了所需的权限范围,向应用程序的清单中添加了自定义角色,将用户添加到了应用程序中,并为用户设置了自定义角色。然后,我将我新注册的应用程序的应用程序 ID 和租户用于 adal-angular4 配置。当我查询端点时,我得到包含角色声明的令牌。它运作良好。当我更改角色时,它会显示在令牌中。
这个角色声明对我来说已经足够了,但它需要两次登录,一次用于我的 B2C 应用程序,另一次用于我的其他注册应用程序。我不认为我可以对两者使用相同的令牌。
为了只有一个登录,我想直接查询Azure B2C。我听说它不提供查询用户角色的功能,如 Azure Active Directory,并且已被定向到使用用户组。我还看过文档,并被告知我需要使用 Azure Graph API,因为 Microsoft Graph 尚未实现查询此信息的功能。
我尝试遵循与 AAD 一起使用的类似 B2C 路径。我创建了一个组并向该组添加了一个用户。我尝试使用 MSAL.js通过 Azure Graph API 端点https://graph.windows.net/myorganization/users?api-version=1.6访问我的 B2C 应用程序的信息,但出现错误“代码”:“Authentication_MissingOrMalformed” . 我验证了 MSAL 检索了令牌并已将其添加到请求中。当我将 url 更改为无效的 url 时,我收到相同的错误。我在这里,这里搜索并发现了相同问题的问题,但没有人回答
我该如何解决这个错误?
是否有必要拥有本地管理员帐户?
我需要在我的 B2C 应用程序上设置任何特殊的范围来授予我的查询授权吗?如果有,具体是什么?我试图将范围的不同值交换到 …
我是 Azure B2C 世界的新手。我正在尝试创建一个自定义用户属性来为我们的应用程序存储数据。我已在 Azure 门户中创建它并将其分配给我的注册/登录策略。但是,我希望能够以编程方式更新/读取此值。我一直在走使用 Graph API 和注册扩展的路线。所以两个问题:
1) 扩展/自定义属性是一回事吗?2)我试过这段代码,返回的扩展名总是空的:
public void RegisterExtension()
{
string myRegisteredAppObjectId = "<>";
string json = @"{
""name"": ""My Custom Attribute"",
""dataType"": ""String"",
""targetObjects"": [
""User""
]
}";
B2CGraphClient b2CGraphClient = new B2CGraphClient();
b2CGraphClient.RegisterExtension(myRegisteredAppObjectId, json);
var extensions = JsonConvert.DeserializeObject(b2CGraphClient.GetExtensions(myRegisteredAppObjectId).Result);
}
Run Code Online (Sandbox Code Playgroud)
B2CGraphClient.cs
public class B2CGraphClient
{
private string clientId { get; set; }
private string clientSecret { get; set; }
private string tenant { get; set; }
private AuthenticationContext authContext;
private ClientCredential credential;
public B2CGraphClient(string …Run Code Online (Sandbox Code Playgroud) 我想知道发送电子邮件的用户的电子邮件地址。在我的应用程序中,人们可以使用社交帐户(google/facebook/Microsoft)或本地帐户进行注册。创建本地帐户时,我们使用电子邮件。
我找到了有关如何存储电子邮件的信息。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-policies
电子邮件地址存储:电子邮件地址可能是用户流程的一部分。如果用户通过社交身份提供商进行身份验证,则电子邮件地址存储在 otherMails 属性中。如果本地帐户基于用户名,则电子邮件地址存储在强身份验证详细信息属性中。如果本地帐户基于电子邮件地址,则电子邮件地址存储在 signInNames 属性中。在任何这些情况下,都不能保证电子邮件地址会得到验证。租户管理员可以在本地帐户的基本策略中禁用电子邮件验证。即使启用了电子邮件地址验证,如果地址来自社交身份提供商且未更改,也不会进行验证。只有 otherMails 和 signInNames 属性通过 Active Directory Graph API 公开。
不知道为什么没有使用用户的“邮件”字段......而是使用 GraphApi:
我做了一个 GET:https : //graph.microsoft.com/v1.0/Users ?$select=displayName,mail,otherMails,signInNames
一些电子邮件出现在“邮件”中,另一些出现在“otherMails”数组中,并且无法选择“singInNames”:( 不显示任何信息,因此有些用户我无法获取有关电子邮件的信息.
我该如何解决这个问题?仅使用Azure AD Graph而不是Microsoft Graph API,因为在该 API 上返回了 signInNames?
没有任何方法可以将电子邮件始终存储在同一属性上吗?或者至少我可以访问 Microsoft Graph API 的一个?仅在声明转换中使用自定义策略?
基本上我正在为我们为我们制作的员工门户实施SSO,但我也希望能够访问图形API(至少,AzureAD REST API项目,如添加/删除/获取用户信息)无需通过SSO登录.
通过这种方式,我可以使用我正在考虑的某种API密钥/秘密类型的设置和计划以某种方式与AD交互的cron作业.从技术上讲,我可以登录并将我的帐户设置为运行此帐户的帐户,但这似乎有点hacky和不可靠(例如,如果我的帐户出现问题,密码过期,更改等等...那么刷新令牌将不再是有效的,我将不得不再次登录,任务可能会暂时中断.)
我可以发誓我几个月前在实施这个时已经看过这方面的文档了,但是我现在不能找到它.
真的希望这不是重复,我只是想不出用于搜索的措辞,不会一直提出基于SSO的API信息.
更新 - 好吧,看起来我想出来了(在Shaun Luttin的答案的帮助下发布了以下内容:https://stackoverflow.com/a/32618417/3721165 [方便链接])
因此,Shaun汇集的所有信息都非常有用.最初,由于他们如何说出事情,以及他们的一些例子的复杂性,文档相当混乱.但是,一旦我开始深入研究一些示例,加上Shaun提供的一些信息,以及我自己的一些实验/研究,我就能够提出这个(基本演示/概念):
using System;
using System.Globalization;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Azure.ActiveDirectory.GraphClient;
namespace AzureADGraphApi
{
class Program
{
private static string tenant = "...tenant id...";
private static string clientid = "...client id...";
private static string appkey = "...app key...";
private static string aadinstance = "https://login.microsoftonline.com/{0}";
private static string graphResourceUrl = "https://graph.windows.net";
static void Main(string[] args)
{
Uri serviceRoot = new Uri(graphResourceUrl + "/" + tenant);
ActiveDirectoryClient adc = …Run Code Online (Sandbox Code Playgroud)