如果我在同一个Asp.net应用程序中托管我的Identityserver4和Api . 什么将用于API控制器的身份验证?来自Identityserver的Cookie或我从SPA应用程序中的oidc-client获得的令牌?
我的测试我可以访问API,如果我没有在角度http reqeuest中发送令牌,只要我有Cookie ...
但这是正确和保存的方式??? Identityserver的MVC控制器受ValidateAntiforgeryKey保护,但不受API控制器保护 .
在同一个应用程序中托管两者是否有意义?
Edit: 在详细信息中,API用于管理IdentityServer . 客户,用户,资源的CRUD操作......
例如:可以在http://localhost:5000访问IdentityServer我想构建一个Angular2 SPA管理UI,可在http://localhost:5000/admin找到
提到ValidateAntiforgeryKey的原因是,因为如果我只对CRUD API使用Cookie身份验证,我还应该使用ValidateAntiforgerKey来保护这些API,或者?
1 回答
听起来您的API和Identity Server是两个独立的问题,应该作为两个单独的应用程序处理 . 这使得维护起来更容易 .
您需要设置
ApiResource
和Client
,在其中将ApiResource
添加为Identity Server配置中的AllowedScope
.然后在您的API应用程序中,您必须添加添加身份验证中间件
UseIdentityServerAuthentication
.详情如下:http://docs.identityserver.io/en/release/topics/apis.html
我可以看到你提到
ValidateAntiforgeryKey
. 此属性不用于防止未经授权的用户,而是用于确保从合法表单发布表单数据 .