转发adfs登录Dynamics AX

时间:2016-04-02 10:34:00

标签: c# asp.net adfs dynamics-ax-2012-r3

我创建了一个新的asp.net Web应用程序,我在其中使用adfs进行身份验证。然后我使用此Web应用程序与Dynamics AX交谈。 内部Dynamics Ax我已经创建了类和服务,并将它们发布为"入站端口"在Dynamics AX内部到IIS。 我可以在Visual Studio中添加服务引用到已发布的服务(通过https并要求使用域凭据)。 服务参考工作正常,我可以使用以下内容与Dynamics AX交流:

ServiceTestClient client = new ServiceTestClient();
client.ChannelFactory.Credentials.UserName.UserName = @"domain\user";
client.ChannelFactory.Credentials.UserName.Password = @"password";

这样的一切都很好,我可以读取和写入AX。 但我当然希望使用我在通过adfs登录应用程序时输入的凭据。 但我的问题是,我真的不知道该怎么做。如何将我获得的索赔或代币转发给Dynamics AX?

我非常确定我必须更改当前在AX内部使用的绑定和clientCredentialtype。 在Visual Studio中添加服务引用后,我在web.config中获得以下内容:

  <basicHttpBinding>
    <binding name="serviceEndpoint">
      <security mode="Transport">
        <transport clientCredentialType="Basic" /> 
      </security>
    </binding>
    <binding name="BasicHttpBinding_ServiceTest">
      <security mode="Transport">
        <transport clientCredentialType="Basic" />
      </security>
    </binding>
  </basicHttpBinding>

所以问题是,我应该在AX内使用什么类型的绑定和clientcredentialtype? 如何将adfs令牌/凭证添加到我创建的客户端? 也许我完全误解了该怎么做,如果是这样的话,我会乐意接受正确方向的指示。

1 个答案:

答案 0 :(得分:0)

如果有人需要答案,我在AD / DAX中创建了一个中间用户,该用户有权与https绑定对话,但无法访问DAX。然后,我将调用上下文设置为从adfs令牌获取的用户。

因此,中间用户的/ pass存储在web.config中,通过adfs进行身份验证的用户是在Dax中执行操作的用户。