所以我一直在研究使用 Microsoft cordova-plugin-ms-adal 插件(使用原生库)为 Cordova 移动应用程序设置 OAuth 2.0,针对使用 Azure AD 的自定义 API。这一切都很顺利,但是我有点困惑于密钥的使用(或更具体地说,它的缺失)。
在网上的许多文章中,他们指出在使用授权代码授予并请求令牌时,需要包括密钥。并且当您可以安全地存储密钥时,此授权类型非常理想。
然而,该插件不需要在应用程序中指定密钥(也是正确的),但它仍然使用授权代码授予进行身份验证。同时,我可以手动调用。
并且它可以正常工作,所以我收到了一个有效的JWT,无需发送密码。为什么呢?这样安全性会降低吗?(我还注意到OAuth 2.0规范第4.1.3节没有说明授权码授权类型需要密码!?)没有密码/基本认证头使用授权码授权类型有哪些影响?
在网上的许多文章中,他们指出在使用授权代码授予并请求令牌时,需要包括密钥。并且当您可以安全地存储密钥时,此授权类型非常理想。
然而,该插件不需要在应用程序中指定密钥(也是正确的),但它仍然使用授权代码授予进行身份验证。同时,我可以手动调用。
https://login.windows.net/common/oauth2/authorize?resource=http://***.onmicrosoft.com/***API&client_id=***&response_type=code&redirect_uri=http://***.onmicrosoft.com/***App
在我的浏览器中,登录并获取代码,然后使用POST方法将其发送到https://login.windows.net/common/oauth2/token。
grant_type: authorization_code
client_id: ***
code: ***
redirect_uri: http://***.onmicrosoft.com/***App
resource: http://***.onmicrosoft.com/***API
并且它可以正常工作,所以我收到了一个有效的JWT,无需发送密码。为什么呢?这样安全性会降低吗?(我还注意到OAuth 2.0规范第4.1.3节没有说明授权码授权类型需要密码!?)没有密码/基本认证头使用授权码授权类型有哪些影响?