尝试访问需要授予类型授权代码的 API 资源。我可以使用 Postman 及其授权工具取回有效的访问代码。
这涉及 Postman 弹出一个登录窗口,我在其中输入用户名和密码。
在没有用户干预的情况下,我如何才能完全解决这个问题?此授权类型似乎是唯一与此 API 一起使用的类型,因为当我尝试将 client_id 和 client_secret 与客户端凭据流一起使用时,我返回的访问令牌不允许我进入 API (401)。
我希望尽可能与代码无关。那就是我希望能够在不依赖在幕后做事的库的情况下做到这一点。理想情况下,一切都将通过 HTTP 完成,就像 cURL 一样。
我有一些 C# 代码可以满足我的需求,但它使用了Microsoft.IdentityModel.Clients.ActiveDirectory
库 ( older version 2.29.0.1078
)。好像可以通过传入用户名和密码来获取token
string userName = "johndoe";
string password = "mydoghasfleas";
string clientId = "7934579357js487dhj444";
clientBaseUrl = "https://mycompanyname.dynamics.com";
apiEndpointUrl = clientBaseUrl + "/data/resource=XYZ";
UserCredential credential = new UserCredential(userName, password);
AuthenticationContext authContext = new AuthenticationContext(apiEndpointUrl, false);
AuthenticationResult authResult = await authContext.AcquireTokenAsync(clientBaseUrl, clientID, credential);
我想弄清楚的是如何在不依赖Microsoft.IdentityModel.Clients.ActiveDirectory
图书馆的情况下做到这一点。