我在我的Identity Server 4 asp.net核心mvc应用程序中添加了几个控制器。为了清楚起见,我已将这些添加到IdentityProvider应用程序(我用于SSO),而不是客户端应用程序。
当我向我的终端发送请求(例如GET sso.app.com/api/users)并且我没有通过身份验证时,我会被重定向到我的登录页面,否则它的工作正常。我想拦截重定向并让控制器返回401 Unauthorized。
我已经探索过使用Authorize标头的策略,但这只会给我一个基于已经过身份验证的用户的通过/失败,所以我没有足够的控制权。我读到了另一个类似的问题,即aspnet核心团队不希望开发人员扩展Authorize标头,而是使用策略。
当我在Startup中添加服务时,我发现并没有找到任何明显的选项。是否有任何选项可以让我为特定路径/端点设置行为,例如'/ api'?
答案 0 :(得分:0)
复制到答案的评论:
所以你在这里有三个应用程序? Identity Server,带有API的一些身份提供者(IDP)和客户端?或者您将Identity Server称为IDP(这很好,有时是,有时不是)?
但是,如果我了解您的设置,重定向登录应该接收API端点作为返回URL。只需在登录控制器中检查它,如果URL与您要阻止的端点匹配,则返回401。
我认为你不能在Identity Server内的其他地方进行拦截。