- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有使用 Graph API (.Net Core 3.1) 为用户创建扩展的代码。我有这个代码的测试项目。但我需要以用户身份进行身份验证才能创建和使用 GraphServiceClient(该用户具有全局管理员角色)。
目标是拥有一个工作代码,为 User 创建 schemaExtension。
现在,要创建扩展,客户端必须具有已授予门户中已注册应用程序的委派权限 Directory.AccessAsUser.All
。但由于这是一个委托(delegate)权限,我需要以用户身份进行身份验证(在测试代码中)。所以我的选择是身份验证提供者:
List<string> scopes = new List<string> { "Directory.AccessAsUser.All" };
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(_appClientId.ToString())
.WithRedirectUri(_redirectUri)
.WithClientSecret(_appSecret) // or .WithCertificate(certificate)
.Build();
AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication, scopes);
_graphServiceClient = new GraphServiceClient(authProvider);
我得到一个异常(exception):
Microsoft.Graph.Auth.AuthenticationException : Code: authenticationChallengeRequired
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(_appClientId.ToString())
.WithRedirectUri(_redirectUri)
.WithClientSecret(_appSecret)
.Build();
OnBehalfOfProvider authProvider = new OnBehalfOfProvider(confidentialClientApplication, scopes);
_graphServiceClient = new GraphServiceClient(authProvider);
我明白了
NullReferenceException
当我尝试实际创建模式时在这一行上:
SchemaExtension extension = await _graphServiceClient .SchemaExtensions.Request().AddAsync(schemaExtension);
IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
.Create(clientId)
.Build();
InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);
我得到:
Microsoft.Identity.Client.MsalClientException : Only loopback redirect uri is supported, but urn:ietf:wg:oauth:2.0:oob was found. Configure http://localhost or http://localhost:port both during app registration and when you create the PublicClientApplication object.
最后一个我完全不明白。那么我怎样才能让这个委托(delegate)认证工作呢?
这是创建扩展的代码,但它不依赖于授权:
SchemaExtension schemaExtension = new SchemaExtension
{
Id = schemaName.Trim(),
// Owner = _appClientId.ToString(),
Description = string.IsNullOrWhiteSpace(schemaDesc) ? string.Empty : schemaDesc.Trim(),
TargetTypes = new List<string>
{
"User"
},
Properties = new List<ExtensionSchemaProperty>
{
new ExtensionSchemaProperty
{
Name = "isGlobalAdmin",
Type = "Boolean"
},
new ExtensionSchemaProperty
{
Name = "isOrganizationAdmin",
Type = "Boolean"
}
}
};
SchemaExtension extension = await GraphClient.SchemaExtensions.Request().AddAsync(schemaExtension); // GraphClient here === _graphServiceClient in the code above
最佳答案
根据我的研究,Microsoft Graph 的不同提供程序使用不同的协议(protocol),适用于不同的环境。更多详情请引用document
它使用 OAuth 2.0 authorization code flow .一般情况下,我们都是针对web app访问web api的情况使用的。更多详情请引用doucment
它使用 OAuth 2.0 authorization code flow .通常,我们将它用于桌面应用程序(例如 WPF)。此外,请注意,当我们将提供程序与 MSAL.NET 一起使用时,we must register "http://localhost" as a Public client (mobile & desktop) redirect URI for your AD application .更多详情请引用document
如果我们想使用Interactive Provider来调用Microsoft Graph,请引用以下步骤
static async Task Main(string[] args)
{
var clientId = "476944ed-e57c-4b2c-b18d-93b5dd5f1bca";
string[] scopes = { "Directory.AccessAsUser.All" };
#please provide the redirect url http://localhost when you create the client
IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
.Create(clientId)
.WithRedirectUri("http://localhost")
.Build();
InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);
var graphClient = new GraphServiceClient(authProvider);
var schemaExtension = new SchemaExtension
{
Id = "courses",
Description = "Graph Learn training courses extensions",
TargetTypes = new List<string>()
{
"Group"
},
Properties = new List<ExtensionSchemaProperty>()
{
new ExtensionSchemaProperty
{
Name = "courseId",
Type = "Integer"
},
new ExtensionSchemaProperty
{
Name = "courseName",
Type = "String"
},
new ExtensionSchemaProperty
{
Name = "courseType",
Type = "String"
}
}
};
var result = await graphClient.SchemaExtensions.Request().AddAsync(schemaExtension);
foreach (var type in result.TargetTypes) {
Console.WriteLine(type);
}
关于c# - Microsoft Graph API 测试 - 代表用户获取访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635587/
我正在尝试在我的 UITableView 上调用 reloadData。我在没有界面生成器的情况下制作我的应用程序。 此代码适用于 Interface Builder,但似乎没有。 当我将我的代码与我
有人可以解释 UIAlertView 的委托(delegate)是如何工作的吗?它是自动调用还是我必须调用它?例如: - (void)alertView:(UIAlertView *)alertVie
编辑:好吧,根据其他人的建议,我创建了一个最小的示例......并且它有效,因此我将在未来与任何人分享它。这是工作代码: #include #include using namespace std
unicode 是 ,它被用在 XML 文档中。 最佳答案 查看图表:unicodelookup.com 换行符。 关于html - unicode字符是什么 代表?,我们在Stack Overflo
我有一个应用程序,可以以编程方式在配置的 Facebook 页面上发帖。我的应用程序显然已批准管理页面和发布页面权限,并且我正在使用页面访问 token 从现在开始一切正常,但最近当我在页面提要上发布
代表 NCAA 男子篮球分组的最佳数据库模式是什么?如果您不熟悉,请点击以下链接:http://www.cbssports.com/collegebasketball/mayhem/brackets/
所以我一直在阅读这个关于如何使用 Frida 的教程:https://www.frida.re/docs/functions/我遇到过以下情况: $ ./client 127.0.0.1 connec
委托(delegate)函数返回之前是否需要调用replyHandler?我需要进行几次 Web 服务 API 调用才能回复,以下实现正确吗? func session(_ session: WCSe
下面提到的是我的 textField 委托(delegate)方法,我正在使用 IQKeyBoardSwift 作为智能键盘。我尝试移除我的键盘,但我仍然没有收到任何关于接受“开始触摸”的方法的调用
我有一个表格 View ,其中几乎没有用于数据输入的文本字段和弹出窗口。我想将其中一些表示为强制性的。我不知道如何讨厌星号。任何帮助将不胜感激。 最佳答案 我认为你可以使用自定义 UITableVie
例如,我知道如何使用 numpy 对数组进行切片 v[1, :, :] 现在我想要一个函数将切片 (1,1,None) 作为输入并返回 v[1,:,:] 问题是我不知道如何表示省略号 最佳答案 您可以
修订... 应用程序的关键是与数据库服务器通信。服务器对应用程序的响应都是 XML 格式的。有几个屏幕。例如,屏幕 1 列出了用户的信息,屏幕 2 列出了用户过去的交易,允许新交易,等等。 这是我的
我想知道映射/表示内存的最佳方式是什么。我的意思是,例如,如何描述一个结构及其所有字段都被序列化。 我正在创建一个 RPC 库,它将使用 dwarf 调试数据创建客户端和服务器,因此我需要创建一个函数
如果我有一个实现了两个协议(protocol)的 View Controller : @interface CustomerOperationsViewController : UIViewContr
在 Objective-C 中我可以做这样的事情: @property (nonatomic, weak) id someObject; 如何在swift中做到这一点?我试过这个: let someO
我成功地使用了相当棒的 connection:didReceiveAuthenticationChallenge: NSURLConnectionDelegate 委托(delegate)方法。很酷。
我正在寻找原始数据类型的 @NonNull 等效 Java 注释。我知道原始数据不能为 null,但我找不到替代方法。 我想要实现的在逻辑上等同于: int mPageNumber; public v
我正在学习 Git,如果我能描述代表 Git 存储库的数学结构,那就太好了。例如:它是一个有向无环图;它的节点代表提交;它的节点有代表分支等的标签(每个节点最多一个标签,没有标签使用两次)。(我知道这
我看过很多与委托(delegate)相关的帖子,我想知道引用它们的正确方法。假设我有一个声明如下的对象: @interface MyViewController : UITableViewContro
我有这个类: public class Order { int OrderId {get; set;} string CustomerName {get; set;} } 我也声明下面的变
我是一名优秀的程序员,十分优秀!