Ros*_*gan 6 azure wif azure-acs
我正在尝试编写一个移动应用程序,它将从基于webapi rest的站点获取数据.
该站点应通过ACS保护(因为可以有多个身份提供者).
我的移动应用程序目前正在查询以下网址https://xx.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=javascriptnotify&realm=http://xx.azurewebsites.net/&version=1.0获取清单IP.
然后,我允许用户选择IP,然后使用Web浏览器控件向我们显示登录信息.
一旦用户登录,我捕获响应并提取令牌,但现在我不确定我应该做什么.令牌看起来像这样: -
{"appliesTo":"http://****.azurewebsites.net/",
"context":null,
"created":1362069383,
"expires":1362072983,
"securityToken":"... a lot of text:-)",
"tokenType":"urn:ietf:params:oauth:token-type:jwt"}
Run Code Online (Sandbox Code Playgroud)
所以,我猜我应该采取securityToken部分并添加它的部分Authorization标头到get请求?
问题1是我应该如何附加令牌 - 我只是附加安全令牌位,还是我必须对该批次进行64位编码并再次将其作为授权标头附加?
问题2如何配置webapi来处理JWT?在我修改了ACS以发出JWT令牌之后,我安装了JWTSecurityTokenHandler,我仍然收到以下错误(这是使用被动身份验证):
JWT10310: Unable to validate signature. validationParameters.SigningTokenResolver type: 'System.IdentityModel.Tokens.IssuerTokenResolver', was unable to resolve key to a token.
The SecurityKeyIdentifier is:
'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = X509ThumbprintKeyIdentifierClause(Hash = 0x2FEE3EE96B019D4BA0C046124B77C652EEF768E5)
)
'. validationParameters.SigningToken was null.
Run Code Online (Sandbox Code Playgroud)
谢谢
罗斯
虽然您没有使用Azure身份验证库,但此AAL代码示例有助于说明如何使用新的JWT令牌处理程序在请求管道中使用HTTP消息处理程序对Web API的请求进行身份验证.该代码显式处理ACS发布的JWT.特别是,看看TokenValidationHandler上课Global.asax.cs.流程如下:
回到你的第一个问题,你只需要"securityToken"值(类似的东西eyJ0eXAiOiJK...)来制作一个授权标题Authorization: Bearer eyJ0eXAiOiJK....当在Web API的请求中传递此消息时,JWTTokenHandler将通过消息处理程序对其进行验证.当然,这假设您的Web API已正确配置,以便了解您首先从ACS获取令牌的ACS租户和安全域.
编辑:查看有关保护REST服务和从移动应用程序访问它们的模式和实践指南 - 非常类似的场景可能有助于为您提供更多上下文.
| 归档时间: |
|
| 查看次数: |
3943 次 |
| 最近记录: |