我正在尝试使用隐式流通过Azure Ad保护我的web api(.net core 2.2)。
我使用 Azure 门户在 Azure AD 中注册了我的应用程序
Name = MyWebApi
应用程序类型=Web应用程序/API
登录URL=http://localhost:55000
创建此应用程序后,我打开其清单文件并将 oauth2AllowImplicitFlow 从 false 更改为 true。
这就是我在azure portal中为应用程序注册所做的一切。
然后我从我的 chrome 浏览器手动调用以下 URL 以获取access_token:
https://login.microsoftonline.com/MY-AD-TENANT-GUID/oauth2/v2.0/authorize?client_id=MY-REGISTERED-APP-GUID
调用上述 URL 的响应为:
http://localhost:55000/#access_token=MY-ACCESS-TOKEN
当我将授权标头中的MY-ACCESS-TOKEN作为不记名令牌传递给我的Web API(. net core 2.2)时,我得到以下异常:
微软。identity model . tokens . securitytokenivalidsignature异常:IDX10511:签名验证失败。尝试键入:“Microsoft。identity model . tokens . x 509 security key,KeyId:N-lC0n-9 dalqwhuhynhq 63 gec xc '。
然后,我尝试手动验证签名:
当我粘贴MY-ACCESS-TOKENhttps://jwt.io/标题是:
{
"typ": "JWT",
"nonce": "AQABAAAAAACEfexXxjamQb3OeGQ4Gugvm6YdOT-bkA0IPllKMt06-J8If5AQ075TVCav94X_ZYcEYKaPneqdJcqYry-Z4XjX0eMN_fiJX_8wXe9D2b6eRiAA",
"alg": "RS256",
"x5t": "N-lC0n-9DALqwhuHYnHQ63GeCXc",
"kid": "N-lC0n-9DALqwhuHYnHQ63GeCXc"
}
然后我去这个URL获取孩子的公钥:N-lC0n-9DALqwhuHYnHQ63GeCXc
https://login.microsoftonline.com/common/discovery/keys
然后,我将以下内容作为公钥粘贴到jwt上。io验证令牌签名:
-----BEGIN CERTIFICATE-----
OBTAINED-PUBLIC-KEY-FROM-THE-ABOVE-URL-HERE
-----END CERTIFICATE-----
我再次得到无效签名。
我去过这个线程:https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/609,但我不确定为什么我的令牌头有随机值,或者这在我的情况下是否是一个问题。
知道我在这里做错了什么吗?
这里发生的是,您收到的令牌是userInfoendpoint的access_token。观众是图。graph的标记已经以一种特殊的方式进行了修改,因此它们必须在签名生效之前进行转换。这允许graph向下游转发令牌(转换后),而不用担心会发生转发攻击。
若要验证,请查看是否“aud == graph”。
我这边试了这个,效果很好
请求网址:
https://login.microsoftonline.com/tenant-name/oauth2/v2.0/authorize?client_id=application_id&response_type=token&redirect_uri=https://snv2app.azurewebsites.net&scope=api://f3d966c0-517e-4e13-a5bb-9777a916b1a0/User.read openid&response_mode=fragment
当我得到access_token时,我在jwt.io中解析它并输入公钥,我得到的结果是:
我在使用jwt.io验证我的azure广告访问令牌时获得无效签名(在手动检查后将转移到scala代码)。 我正在使用 curl 生成访问令牌: 虽然它为我提供了访问令牌,但响应不包含“Id_token”。不知道为什么。 我正在使用 BEGIN 和 END 证书包装 https://login.microsoftonline.com/common/discovery/keys 中的公钥。(如 htt
文件上说https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html 必须验证访问令牌。如何验证令牌?
我试图使用请求模块向https://accounts.spotify.com/api/token发出POST请求,以便获得访问令牌。我已经用我的Spotify开发帐户注册了重定向URI。这是我的快速<代码>/重定向 路由。 有人能看到这里可能出了什么问题吗?每次我得到的都是一个不伦不类的“哎呀!出了问题”错误页面。
我想做基于令牌的机制,我将有要么温泉或移动应用程序支持多个客户端。 我的web服务引擎和应用程序的用例: 我的web应用程序:客户将注册他们的应用程序,无论是SPA还是移动应用程序。他们将在注册时获得客户id。在SPA或移动应用程序的情况下,只有作为密钥的客户端id会被泄露,因此我只提供客户端id。 Web服务引擎:支持多个客户端,登录客户端各自的应用程序后管理每个用户的会话。 因此,假设有 2
当且仅当用户在发出OAuth2请求时登录到LinkedIn时,它才起作用。 如果用户未登录,则会遇到错误。 我们的行动顺序: 成功获取新的访问令牌 使用访问令牌,发布到apiendpoint 之后,我们将收到一份401,内容如下: 有时,经过一段时间后,使用相同的访问令牌重试会得到200。有时不会。 如果用户在“401期间”登录LinkedIn,那么之前获取的访问令牌就会神奇地开始工作。 我不知道
我试图使用从Spring应用程序中的公共客户端获取访问令牌。 谁能帮我弄清楚我做错了什么吗?