我正尝试在ASP.Net MVC中创建一个页面来重置当前用户的密码。我正在使用Azure活动目录进行用户验证。要访问用户的AD信息,我正在使用C#Graph API客户端。我的代码基于在GitHub使用Azure AD Graph客户端API更改用户密码的权限问题
上找到的样本。我可以对用户的信息(如城市,州,邮件)进行更改。但是,当我尝试使用用户对象上的PasswordProfile属性更改密码时,出现错误,表示我的权限不足。我正在尝试将密码更改为应用程序,并且我认为权限问题的来源与应用程序有关。
我找到了下面的PowerShell脚本,它应该将公司管理员角色添加到应用程序中。但是,对Get-MsolServicePrincipal的调用不会返回任何内容。查看命令的输出,我没有看到任何类似于我的应用程序名称的条目。
#-----------------------------------------------------------
# This will prompt you for your tenant's credential
# You should be able to use your your Azure AD administrative user name
# (in the [email protected] format)
#-----------------------------------------------------------
import-module MSOnline
Connect-MsolService
#-----------------------------------------------------------
# Replace the Application Name with the name of your
# Application Service Principal
#-----------------------------------------------------------
$displayName = "My Azure AD Application"
$objectId = (Get-MsolServicePrincipal -SearchString $displayName).ObjectId
#-----------------------------------------------------------
# This will add your Application Service Prinicpal to
# the Company Administrator role
#-----------------------------------------------------------
$roleName = "Company Administrator"
Add-MsolRoleMember -RoleName $roleName -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectId
我想我的第一个问题是我正确的权限问题是与应用程序?
其次,我应该设置$ displayName变量的值是多少?
您可以扩展如何创建UserCredential?我所看到的唯一属性和构造函数是用户名。桌面应用程序和Web应用程序库有区别吗? –
我不认为存在差异否,下面是使用'UserCredential'的一些信息... http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate -users-via-usernamepassword /基本用法虽然是...'var credential = new UserCredential(“username”,“password”);' –
由于某种原因,UserCredential对我来说没有两个构造函数,但UserPasswordCredential可以做到这一点。在调整我的常量和权限之后,我让它工作。谢谢。 –