ex = {“AADSTS70002:请求正文必须包含以下参数:'client_secret或client_assertion'

时间:2017-08-10 09:18:06

标签: c# azure-active-directory

这就是我编写代码并尝试获取输出的方法。

  

请求正文必须包含以下参数:client_secretclient_assertion

 static async Task<AuthenticationResult> getAccessToken()
 {
     string hardcodedUsername = "";
     string hardcodedPassword = "";
     string tenantName = "projectwidgets.com";
     string authString = "https://login.microsoftonline.com/" + tenantName;
     AuthenticationContext authenticationContext = new AuthenticationContext(authString, false);
     //Config for OAuth client credentials
     string clientId = "as";
     string key = "kk";
     string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenantName);
     var authContext = new AuthenticationContext(authority);
     AuthenticationResult result = null;
     try
     {
         result = await authContext.AcquireTokenAsync("https://pwsnapitazure.azurewebsites.net", clientId, new UserPasswordCredential(hardcodedUsername, hardcodedPassword));
     }
     catch (Exception ex)
     {
          Console.WriteLine(ex.StackTrace);
          System.Diagnostics.Debug.WriteLine(ex.Message);
     }                        
     return result;
 }

3 个答案:

答案 0 :(得分:3)

Azure 应用注册用户界面已从旧版更改。因此,您需要启用称为

的附加设置

默认客户端类型

enter image description here

清单中,您也可以控制

"allowPublicClient": true

希望这对某人有帮助

答案 1 :(得分:0)

尝试使用UsernamePasswordCredential凭据访问Azure资源时,出现以下错误。

这是因为为Azure AD中注册的应用程序禁用了“允许公共客户端流”。

启用它可以为我们解决问题。

https://nishantrana.me/2020/12/01/fixed-aadsts7000218-the-request-body-must-contain-the-following-parameter-client_assertion-or-client_secret/

答案 2 :(得分:0)

更正 ClientId 和 Authority 值对我来说很神奇。