注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

Dynamics CRM 配置 OAuth 2.0  

2014-03-24 08:49:39|  分类: CRM安装 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复124或者20140324可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!

本博文主要参考但不限于如下资料:

1.  Post-installation and configuration guidelines for Microsoft Dynamics CRM 2013

2. SDK上 Write mobile and modern apps 章节。

目前本博文是基于Windows Server 2012 R2,它自带的 AD FS 的版本是 2.2,其他版本不支持。

首先要在AD FS服务器上为Intranet打开基于表单的验证,这里我的 前一篇博文 已经讲了。

1. 以管理员身份登陆到AD FS服务器。

2. 打开 AD FS管理界面。

3.点击左边的 身份验证策略,会看到中间的 主要身份验证 部分的 全局设置,点击  编辑 链接。

4.将Intranet下面的 表单身份验证 勾选。

处理后界面如下。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

然后就是在AD FS服务器上打开PowerShell,执行如下命令:

Add-PSSnapin Microsoft.Crm.PowerShell
$fedurl = Get-CrmSetting -SettingType ClaimsSettings
$fedurl.FederationProviderType = 1
Set-CrmSetting $fedurl

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

值得一提的是,虽然FederationProviderType设置为了1,但是就算重启了服务器,这个值还是没有改过来,这算是一个Bug吧,囧。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

但是根据最新版本的官方文档:Post-installation and configuration guidelines for Microsoft Dynamics 365 ,上面的命令不用执行,而应该是执行如下的命令:

$ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings

$ClaimsSettings.Enabled = $true

Set-CrmSetting -Setting $ClaimsSettings

截图如下:

Dynamics CRM 2013 配置  OAuth 2.0 - 罗勇 - 微软MVP罗勇的博客

 这个设置以后,重新获取的话,显示Enabled=true,至少看起来正常了。

接下来是添加 AD FS 客户端:

官方的示例代码是:

Add-AdfsClient -ClientId ce9f9f18-dd0c-473e-b9b2-47812435e20d -Name "Dynamics CRM Mobile Companion" -RedirectUri ms-app://s-1-15-2-2572088110-3042588940-2540752943-3284303419-1153817965-2476348055-1136196650/, ms-app://s-1-15-2-1485522525-4007745683-1678507804-3543888355-3439506781-4236676907-2823480090/, urn:ietf:wg:oauth:2.0:oob

我随便添加一个,以备后来用于web应用程序的开发。

Add-AdfsClient -ClientId "ba106265-fb3b-49e0-a0e8-6840b3d71ac2" -Name "luoyong's dynamics CRM ADFS Client" -RedirectUri "http://www.luoyong.me"

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客
 
 
下面我介绍如何配制才能运行SDK\SampleCode\CS\ModernAndMobileApps\ModernOdataApp 这个程序,我这里是以管理员身份运行Visual Studio 2012来打开它。

首先打开它,需要安装一个Nuget Package,点击 工具 > 库程序包管理器 > 程序包管理器控制台 。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

然后使用如下命令安装:

Install-Package Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication

 可以看到安装成功了。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

当然,通过 工具 >  库程序包管理器 > 管理解决方案的NuGet程序包也是可以看到已经安装了的。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

在增加Adfs Client的时候需要为RedirectUri参数赋值,这个值怎么获取呢?可以通过WebAuthenticationBroker.GetCurrentApplicationCallbackUri().ToString() 来获取。修改程序中的 CurrentEnvironment.cs 文件,增加一行 string x = redirectUrl; ,在这行设置断点,然后debug这个程序,就可以获取到了。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

这样我们就可以增加一个AdfsClient了,在Adfs服务器上打开PowerShell,运行如下命令:

Add-AdfsClient -ClientId 73893D88-63E6-485E-9953-9CF50330748E -Name "luoyong's win8 desk app adfs client" -RedirectUri ms-app://s-1-15-2-2546649515-4026661643-3605107077-273277970-2480924813-1788835805-1056465539

当然ClientId参数的值可以随意,唯一标志本Client即可。官方建议用Guid,我这里是用Visual Studio生成了一个Guid。然后我用Get-AdfsClient来查看下,确保添加成功了。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

然后是修改配置,主要是修改我下图所示的三个常量的值。_ClientID常量的值我设置为上文我们增加的AdfsClient的ClientId参数的值,其余两个根据你的CRM部署来设置。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客
 
然后我Debug起来会看到如下的登陆页面。 

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

我这里输入的凭据如下:

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

点击登陆以后可以看到如下的界面:

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客

 

我这里打开Accounts功能给大家看。

Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客
 
 你还会发现第二次debug的时候不需要登陆了,这个密码肯定是被存储起来了,应该是存储在 凭据管理器 中,打开控制面板,点击 凭据管理器。 
Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客
 
你会发现多了Web凭据如下。
Dynamics CRM 2013 配置OAuth - 罗勇 - 罗勇的博客
 
素格格新疆特产店--做最好新疆特产的搬运工。
本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!
Dynamics CRM 2013 配置  OAuth 2.0 - 罗勇 - 罗勇的博客
 
  评论这张
 
阅读(2088)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018