2013-04-15 20 views
3

我已經建立了基本身份驗證的servicestack服務使用的第一個例子,在這裏: https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization如何在/ auth/basic中請求來自servicestack基本認證的會話?

這自動設置路線:/ auth /中基本 但是,我無法找到如何格式化任何信息或實例對這個URL的請求(變量/ GET/POST/Auth標題等)。

我能夠使用基本身份驗證憑據訪問簡單的服務,因此它們是活動且正確的。

我沒有自定義身份驗證插入,只是基本身份驗證。

我曾嘗試:

  • 使用JsonServiceClient由GET或JSON POST發送用戶名和密碼變量/ AUTH /鹼性的,有和沒有驗證首標也包含用戶&通。

  • 使用瀏覽器發送GET請求與用戶名/密碼的URL參數,或者作爲http://user:[email protected]:123/auth/basic

我總是隻得到 「HTTP/1.1 401無效的基本驗證憑據」。

唯一的例子,我可以找到涉及某種自定義驗證,然後/認證/證書被訪問,但我想用/ auth /中基本

我已經看過的代碼,它看起來像它讀取Auth標題,但該服務不接受。

我實際上試圖讓這個工作,所以我可以然後禁用它,並驗證它被禁用(我想要求每個請求基本認證)。

的問題是:

  • 什麼是調用/ auth /中基本服務的正確方法是什麼?我將採用服務堆客戶端API示例,規範甚至原始http請求!

  • 如何完全禁用/ auth服務?

非常感謝。

回答

-1

將以下內容放在apphost配置中似乎有竅門。

//Disable most things, including SOAP support, /auth and /metadata routes 
SetConfig(new EndpointHostConfig() 
{ 
    EnableFeatures = Feature.Json | Feature.Xml 
}); 

我有點懷疑,這是什麼一樣到/ AUTH然而,因爲它返回一個空的響應,而大多數航線返回404

所以,將這個真正禁用/ AUTH功能?如果有人對/ auth/credentials形成了正確的請求,它是否仍然會返回一個空的響應?

1

調用/ auth/basic服務的正確方法是什麼?我將採用服務堆客戶端API示例,規範甚至原始http請求!

var client = new JsonServiceClient("http://localhost:56006/api"); 
var resp = client.Post(new Auth() { UserName = "TestUser", Password = "Password" }); 
  • 這是假設你也註冊了ICacheClientIAuthUserRepository(並增加了一個用戶帳戶)

JSON格式是這樣的,如果你打電話到/auth/basic?format=json

{ 
    "UserName": "admin", 
    "Password": "test" 
    "RememberMe": true 
} 

如何完全禁用/ auth服務?

不要將AuthFeature插件添加到配置中。

您還可以remove plugins

Plugins.RemoveAll(x => x is AuthFeature); 
+0

感謝您的幫助。當您添加BasicAuthentication(針對每個請求認證)時,AuthFeature /會話將自動添加。問題是,如何在不禁用每請求認證的情況下禁用/ auth會話功能? –

+0

你不能 - 'AuthFeature'插件註冊'SessionFeature'插件並使用它。對於每次不帶會話的調用進行基本身份驗證,您可以編寫自定義的'RequestFilterAttribute'實現,並使用此自定義'[BasicAuthenticate]'屬性修飾您的服務。 – wqw

相關問題