2014-01-10 70 views
4

我想在MacOSX 10.9.1(小牛)中擴展登錄屏幕。正如我發現的,通過實現一個新的身份驗證插件並將其安裝到authorization database中,這是可能的。自定義登錄屏幕Mac OSX(SFAuthorizationPluginView)

我已下載了NameAndPassword示例,其中顯示瞭如何實現接口並覆蓋/擴展SFAuthorizationPluginView。但問題是我無法在小牛隊中打造它。所以我決定下載第二個叫做NullAuthPlugin的例子。這一個編譯,但我沒有找到如何安裝它。

所以我的問題之一是,如果有一個很好的和更新的教程(技術說明是表格2008-09-16)?

第二個問題是,如果這可以用C#(Xamarin.Mac/MonoMac)開發,因爲我不擅長開發Objective-C/C/C++。

謝謝!

+0

我有一個基於NameAndPassword示例的插件,它適用於Mavericks,但在Mountain Lion下編譯。在小牛下編譯的問題是什麼? – TheDarkKnight

+0

在構建選項菜單(NameAndPassword中的路徑被硬編碼爲10.9中不存在的10.5 sdk)中將SDK指定爲當前(10.9)後,它是可構建的。您還需要使用默認平臺列表執行某些操作,然後構建它們而不會出現問題。但是,有什麼問題是我無法獲得NameAndPassword示例進行身份驗證 - 輸入我的密碼並按下按鈕或返回沒有任何反應,我必須通過SSH停用它。 @ Merlin069你認爲你可以幫忙嗎?我知道使用Xcode進行調試,但我附近沒有其他Mac。 –

+0

@MichałSiwek,你可以把它作爲一個新的問題添加到SO,提供任何代碼的例子,如果它不同於這個例子? – TheDarkKnight

回答

4

好吧,這些bug已經多次報告給蘋果公司,但他們迄今爲止並沒有做任何事情。最簡單的答案是:您需要修補版本的NameAndPassword插件 - 官方插件已損壞。我把我的固定插件在GitHub上:https://github.com/skycocker/NameAndPassword

更換在授權策略數據庫的

<string>loginwindow:login</string> 

符合

<string>NameAndPassword:invoke</string> 

否則將無法登錄你很重要如果沒有Merlin69的幫助,我不會解決這個問題。

+0

你能解釋一下運行這個過程,以及在哪裏替換那條線? – xdumaine

+0

@xdumaine肯定 - http://stackoverflow.com/a/21618085/2113110 :) –

-2

首先: 從不,EVER,EVER開始通過將其放置在控制檯登錄權限內來調試登錄插件。您需要在auth數據庫中創建一個特殊的測試「虛擬」,完全獨立於操作系統在操作期間可能需要調用的任何其他權限。稱之爲「MyTestRight-RemoveMeAfterTest」。

創建一個plist文件看起來是這樣的:

「安全authorizationdb寫MyTestRight-RemoveMeAfterTest < MyTestRight-RemoveMeAfterTest_plist_file」

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>class</key> 
    <string>evaluate-mechanisms</string> 
    <key>comment</key> 
    <string>Used to validate a terminal user.</string> 
    <key>mechanisms</key> 
    <array> 
     <string>NameAndPassword:invoke</string> 
    </array> 
</dict> 
</plist> 

與來自終端的 「安全性」 命令來安裝它

即使您仍然可以這樣做,即使您仍然可以手動編輯auth db,這在10.9之前的osx上也是如此。如果你犯了一個錯誤,而操作系統無法解析文件,你將會處於一個受到傷害的世界。我去過那裏。我一直在做這些插件多年。如果操作系統無法讀取文件,如果您的插件在登錄時掛起 - 如果沒有槳,則會出現同樣的情況。如果您沒有先見之明來啓用SSH,則必須啓動到另一個分區或從時間機器備份啓動。在後一種情況下,您最好將最近的編輯保存在某個外部驅動器上。

在db中安裝好以後,您應該從外部程序對其進行測試。

您需要像名稱和密碼示例中包含的自述文件中演示的那樣調用安全基礎結構,並請求您的權利,就像操作系統所做的那樣。

使用任何蘋果樣品時要小心。僅將它們用作指導。 NameAndPassword有錯誤,永遠無法運行。它最後在2006年更新並使用了許多現在已經過時的功能。它實際上什麼都不做,但只是一個殼。