如何根据 ADFS 3.0 识别通过 ADAL 身份验证的用户?
How to identify a user authenticated with ADAL against ADFS 3.0?
我有 ADAL iOS 使用 ADFS 3.0 服务器。它打开一个 Web 视图,用户进行身份验证,然后我收到一个带有访问令牌的回电。
我遇到的问题是我没有收到有关用户身份的任何信息。 userInformation
属性 是 nil
。任何 HTTP 响应中都没有 id_token
,我不确定如何首先请求一个。我在其他地方看到微软人员说 ADFS 3.0 根本不支持 id_token
。我还解析了 JWT 格式的访问令牌,但其中也没有可用于识别用户的信息。
在 ADFS 3.0 服务器端,我们配置并启用了一个声明规则,该规则表示向依赖方提供 GUID、名字、姓氏和电子邮件地址。但添加该规则对我通过 ADAL 获得的响应没有影响。
我如何识别通过 ADAL 对 ADFS 3.0 服务器进行身份验证的用户(即获取 GUID、名字、姓氏和电子邮件地址)? ADFS 3.0 服务器上是否有我可以使用提供的访问令牌访问的端点,我可以在其中请求此信息?
事实证明 ADFS 3.0 可能不支持 id_token
,但如果您正确设置了依赖方的声明规则,它们将被添加到您收到的访问令牌的顶层。显然声明规则在正确时应该看起来像这样:
访问令牌是 JWT 令牌,因此可以对其进行解码并从中检索值。解码后,它看起来像这样:
{
"appid": "5f9a5589-6064-423a-8a1a-6a0d7ddda19f",
"aud": "x-msauth-glazersapp://com.example.MyApp",
"auth_time": "2016-08-08T22:32:14.459Z",
"authmethod": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
"email": "me@example.com",
"exp": 1470699134,
"family_name": "John",
"given_name": "Doe",
"iat": 1470695534,
"iss": "http://adfs.example.com/adfs/services/trust",
"objectGUID": "c8oMVOOEskutnPVno41Y1w==",
"ver": "1.0",
}
"email"、"family_name"、"given_name" 和 "objectGUID" 已添加到访问令牌。请注意,这样提供的 GUID 实际上是 Base64 编码的。
此处提供更多信息:http://chrisrisner.com/Accessing-Resources-Secured-By-Azure-Active-Directory-with-iOS-and-Android
我有 ADAL iOS 使用 ADFS 3.0 服务器。它打开一个 Web 视图,用户进行身份验证,然后我收到一个带有访问令牌的回电。
我遇到的问题是我没有收到有关用户身份的任何信息。 userInformation
属性 是 nil
。任何 HTTP 响应中都没有 id_token
,我不确定如何首先请求一个。我在其他地方看到微软人员说 ADFS 3.0 根本不支持 id_token
。我还解析了 JWT 格式的访问令牌,但其中也没有可用于识别用户的信息。
在 ADFS 3.0 服务器端,我们配置并启用了一个声明规则,该规则表示向依赖方提供 GUID、名字、姓氏和电子邮件地址。但添加该规则对我通过 ADAL 获得的响应没有影响。
我如何识别通过 ADAL 对 ADFS 3.0 服务器进行身份验证的用户(即获取 GUID、名字、姓氏和电子邮件地址)? ADFS 3.0 服务器上是否有我可以使用提供的访问令牌访问的端点,我可以在其中请求此信息?
事实证明 ADFS 3.0 可能不支持 id_token
,但如果您正确设置了依赖方的声明规则,它们将被添加到您收到的访问令牌的顶层。显然声明规则在正确时应该看起来像这样:
访问令牌是 JWT 令牌,因此可以对其进行解码并从中检索值。解码后,它看起来像这样:
{
"appid": "5f9a5589-6064-423a-8a1a-6a0d7ddda19f",
"aud": "x-msauth-glazersapp://com.example.MyApp",
"auth_time": "2016-08-08T22:32:14.459Z",
"authmethod": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
"email": "me@example.com",
"exp": 1470699134,
"family_name": "John",
"given_name": "Doe",
"iat": 1470695534,
"iss": "http://adfs.example.com/adfs/services/trust",
"objectGUID": "c8oMVOOEskutnPVno41Y1w==",
"ver": "1.0",
}
"email"、"family_name"、"given_name" 和 "objectGUID" 已添加到访问令牌。请注意,这样提供的 GUID 实际上是 Base64 编码的。
此处提供更多信息:http://chrisrisner.com/Accessing-Resources-Secured-By-Azure-Active-Directory-with-iOS-and-Android