MS Dynamics:为OAuth生成刷新令牌

时间:2018-05-10 06:45:17

标签: azure dynamics-crm microsoft-dynamics dynamics-365 adal.js

我正在使用MS Dynamics的OData api。这里我们使用oauth进行身份验证

我正在参考 参考:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/developer-guide?view=dynamics-ce-odata-9

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/connect-customer-engagement-web-services-using-oauth

我正在使用Web Api,所以我们遵循以下参考。

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/oauth-cross-origin-resource-sharing-connect-single-page-application

我们遵循的步骤:

1 即可。向Microsoft Azure注册了一个应用程序:

参考:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/walkthrough-register-dynamics-365-app-azure-active-directory

2 即可。使用ADAL.js获取令牌。 - 尝试使用ADAL C#sdk但由于登录窗口的对话框无法弹出到Asp.Net Core Web Api项目中而失败。

参考:https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/connect-customer-engagement-web-services-using-oauth

要生成令牌,我们只使用ApplicationId,ResourceUrl(动态资源网址)。

第3 即可。将Bearer令牌传递给其余的api。它奏效了。

需要:如果令牌过期,我们必须刷新令牌。我们尝试使用在文档中指定的c#ADAL SDK。

   AuthenticationContext authContext =
                new AuthenticationContext("https://login.windows.net/common/", false);

   AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientId, new Uri(redirectUrl), new PlatformParameters());
  

例外:未实施方法或操作。

     

在   Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Platform.WebUIFactory.CreateAuthenticationDialog(IPlatformParameters   参数)

您能指导我们,我们如何在Web Api(Asp.net Core)中刷新令牌。我们如何才能在MS Dynamics OAuth中获得refresh_token。您是否有其他方法可以访问令牌/刷新令牌?

注意:我们只允许从html页面登录oauth对话框一次并存储给定的令牌。我们必须使用相同的令牌来生成新令牌或任何其他方式来刷新令牌(第二次没有提示对话框)以在MS Dynamics OData Web Api中使用。 我正在使用Asp.net Core Web API Project来执行动态之间的交互。

1 个答案:

答案 0 :(得分:0)

用法:

AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(ClientConfig.CRMOrgUrl,clientcred)。结果;

参考:

https://community.dynamics.com/crm/b/gustafscrmblog/archive/2017/09/15/authenticationresult-acquiretoken-deprecated-in-adal-3-x-and-how-to-fix