使用Owin在Web服务中进行OpenId连接令牌验证

使用Owin在Web服务中进行OpenId连接令牌验证,openid,katana,adal,Openid,Katana,Adal,目前,在我的web服务中,我利用app.useWindowsAzureActiveDirectoryBeareAuthentication来验证AAD发行的代币和它的真棒!我想对任何OpenId连接令牌执行类似的操作,但我不确定UseWindowsAzureActiveDirectoryBeareAuthentication是否正确,因为它是针对AAD的,并且没有说明底层协议。似乎只有另外两个选项是app.usejwtbearAuthentication和app.useOAuthbearAuth

目前,在我的web服务中,我利用app.useWindowsAzureActiveDirectoryBeareAuthentication来验证AAD发行的代币和它的真棒!我想对任何OpenId连接令牌执行类似的操作,但我不确定UseWindowsAzureActiveDirectoryBeareAuthentication是否正确,因为它是针对AAD的,并且没有说明底层协议。似乎只有另外两个选项是app.usejwtbearAuthentication和app.useOAuthbearAuthentication。我将使用的身份提供程序很可能支持发现,因此我们的想法是简单地注册有效的访问群体、颁发者和发现或metada url,并让身份验证中间件处理其余部分(检索签名密钥、缓存它、验证过期、颁发者、访问群体等)就像我使用WindowsAzureActiveDirectoryBeareAuthentication一样。这两个中间产品中哪一个是推荐的

app.useWindowsAzureActiveDirectoryBeareAuthentication和app.useWindowsAzureActiveDirectoryBeareAuthentication。UseJwtBeareAuthentication在内部调用UseOAuthBeareAuthentication中间件。前者用于xml,后者用于jwt令牌。我建议您使用app.UseJwtBearerAuthentication来满足您的要求。

当您访问web服务时,OpenID Connect实际上并没有添加任何神奇的调味汁,它与OAuth2大致相同。您将继续使用“OAuth 2.0授权框架:承载令牌使用”RFC 6750来实现这一点。发送到web API的令牌是访问令牌,即使在OpenID Connect中也是不透明的。您所描述的机制适用于id_代币,这些代币都是通过授权获得的,授权依赖于通过浏览器交付的应用程序(因此不是web服务,而是服务于UX或本机客户端的web应用程序)。在web服务的情况下,客户端不一定是web浏览器,这就是为什么通常使用RFC6750访问它的原因。 现在:Azure AD碰巧对id_令牌和访问令牌使用了相同的令牌格式和相同的签名密钥,这可能是您认为该方法可以被推广的原因,但没有任何规范要求任何关于访问令牌的内容,因此对于web服务/API,它是一种不会推广到其他提供商的方法。它适用于web用户体验