我正在尝试通过本机Android应用程序使用ADFS 2016和OpenID Connect身份验证来获取ID令牌。然后,ID令牌将提供给我的服务器,以证明用户是谁,并提供一些其他属性(例如电子邮件,名字/姓氏)作为声明。
ID令牌必须包含自定义声明-这是我的重点。
我已经在ADFS中配置了应用程序组,并添加了本机应用程序和Web API。
我已经在ADFS中将服务器表示为Web API,因为它允许我指定自定义声明规则。除了自定义声明规则外,我还将本机应用程序的允许范围设置为“ openid个人资料电子邮件allatclaims”
我一直在使用的Android库是OpenID AppAuth库-除非ID令牌内部没有其他声明,否则它都能很好地工作。
Android应用正在使用ADFS中本机应用的客户端ID使用的代码授予类型。我已将'aud'参数设置为Web API的标识符。
我只是看不到我所缺少的内容,这会使客户收到带有这些自定义声明的ID令牌。
作为一项额外的测试,我使用MS ADAL创建了一个macOS应用,该应用成功提供了自定义声明,但是它们位于access_token中,并且使用了SAML。
你看过这个sample吗?
必须具备:
在您的AD FS服务器上安装了KB4019472: