c# - 从 C# 应用程序访问应用程序失败
问题描述
我在 Azure Portal -> App Registration 下注册了一个小应用程序。我正在尝试使用密钥访问。
var context = new AuthenticationContext("https://login.windows.net/" + MyConstants.tenantID);
ClientCredential cc = new ClientCredential(MyConstants.applicationId, MyConstants.authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
client = new DataFactoryManagementClient(cred)
{
SubscriptionId = MyConstants.subscriptionId
};
我如何获得authenticationKey
?
我尝试使用客户端 Secret 但它不起作用
var context = new AuthenticationContext("https://login.windows.net/" + MyConstants.tenantID);
ClientCredential cc = new ClientCredential(MyConstants.applicationId, MyConstants.authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
client = new DataFactoryManagementClient(cred)
{
SubscriptionId = MyConstants.subscriptionId
};
“Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:AADSTS700016:在目录“e2454f92-2891-4670-9402-f17f4cef17de”中找不到标识符为“270d74fc-4085-43ff-ab1e-e2dba48461e0”的应用程序。如果应用程序尚未被租户管理员安装或租户中的任何用户同意。您可能将身份验证请求发送给了错误的租户。
跟踪 ID:cee6d534-7d75-4fcb-a5e9-0d93ab88af00\r\n相关 ID:3b74b95e-a33a-410d-9e4e-82eef4a81817 时间戳:2019-11-11 10:51:43Z ---> Microsoft.IdentityModel.Clients.ActiveDirectory .AdalServiceException:响应状态码不表示成功:400(BadRequest)
解决方案
根据您提供的错误,您使用的应用程序id在租户中不存在或者您没有完成管理内容。如果您想使用客户端凭证流来获取访问令牌并调用 API,请参考文档。详细步骤如下。1.注册一个Azure AD应用
将 RABC 角色分配给应用程序。因为要创建 Azure 数据工厂,所以可以
Data Factory Contributor role
为应用程序分配角色。更多详细信息,请参阅文档。一个。单击要授予访问权限的订阅。
湾。单击访问控制 (IAM)。
C。单击角色分配选项卡以查看此订阅的所有角色分配。
代码
string tenantID = "<your tenant ID>";
string applicationId = "<your application ID>";
string authenticationKey = "<your client secret for the application>";
string subscriptionId = "<your subscription ID where the data factory resides>";
var context = new AuthenticationContext("https://login.windows.net/" + tenantID);
ClientCredential cc = new ClientCredential(applicationId, authenticationKey);
AuthenticationResult result = context.AcquireTokenAsync(
"https://management.azure.com/", cc).Result;
ServiceClientCredentials cred = new TokenCredentials(result.AccessToken);
var client = new DataFactoryManagementClient(cred) {
SubscriptionId = subscriptionId };
推荐阅读
- oracle - INITIAL_VALUE 上的 SET_ITEM_PROPERTY 不起作用
- git - Azure DevOps 默认权限
- bitwise-xor - 如何在按位异或中反转我的公式以获得 53 的值?
- javascript - 反应和文本输入 - 使用 onBlur 或 onChange?
- apache-kafka - 更改默认端口的 Apache Zookeeper 问题
- python - 为什么无论如何我都会不断收到“正在关闭...”作为输出?
- ruby - 如何更改 gemfile.lock 捆绑的版本
- ruby-on-rails - Rails + Puma + sidekiq + rabbitMQ(bunny gem) ,当我们在 heroku 上运行时遇到连接问题
- android - Phonegap 推送通知 - PushNotification.init() 未触发
- amazon-web-services - ELK 上的 AWS 成本仪表板