2017-08-24 77 views
2

我設法使用單個頁面應用程序項目(ReactJS),在ASP.net Core項目上運行的API和IdentityServer 4項目獲得解決方案。Identity Server 4用戶管理API

我希望能夠從單頁應用程序項目調用IdentityServer 4項目的API。

我使用authorize屬性在IdentityServer 4應用程序中創建了一個簡單的控制器類。但是,如果我通過Postman調用它,則會返回登錄頁面的HTML。

這種情況發生在我已經登錄API並且使用相同的標記之後。

我該如何登錄到身份服務器來撥打電話來管理用戶?

+0

您應該顯示相關的代碼。請參閱:https://stackoverflow.com/help/how-to-ask具體來說:https://stackoverflow.com/help/mcve – jdv

回答

1

正如評論中所述,您應該在您的問題中添加更多信息。你的控制器是身份服務器的mvc應用程序的一部分?你使用AspnetCore.Identity嗎?

如果是這樣,您的控制器受到AspnetCore.Identities的Cookie認證方案的保護。你需要發送cookie來訪問控制器。這與身份服務器無關,因爲您在本地MVC應用程序中,它只是普通的vanilla MVC。

郵差有問題發送cookie,你需要interceptor chrome extension。你也需要通過郵遞員登錄。

如果SPA由相同的MVC應用程序託管,這可能會起作用。如果沒有,你需要配置你的MVC應用程序,以驗證訪問令牌(不只是發給他們),像這樣:

// Adds IdentityServer 
app.UseIdentityServer(); 

// Accept access tokens from identity server 
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
{ 
    Authority = "http://localhost:5000", 
    RequireHttpsMetadata = false, 
    AuthenticationScheme = "Bearer" 

    ApiName = "api1" 
}); 

這樣,您就可以請求訪問令牌通過身份服務器的本地API,(你還需要爲'api1'配置一個api作用域)。

爲了驗證他們在您的API控制器添加到您的控制器:

[Authorize(ActiveAuthenticationSchemes = "Bearer")] 
    [HttpGet] 
    public string Bearer() 
    { 
     return "Access Token Accepted"; 
    }