Permalink

Howto: Per Shortcut in macOS Apps einloggen (mit Hilfe von 1Password und Keyboard Maestro)

Trotz aller Kontroversen bin ich nach wie vor ein sehr großer Fan des Passwortmanagers 1Password.

Vor etwas mehr als zwei Jahren hatte ich auf die verfügbaren Tastaturkürzel der App aufmerksam gemacht und gezeigt, wie man sich über 1Password mini relativ einfach in Webseiten und Apps einloggen kann.

Bildschirmfoto 2017-08-25 um 11.02.06-minishadow

Während das Einloggen auf Webseiten (meistens) mit einem nur einem Klick oder Sprachbefehl erledigt ist, sind zum Einloggen in eine App schon mehrere Schritte notwendig.

Um diesen Workflow abzukürzen, hatte unser geschätzter Kollege Alexander vor gut zwei Wochen ein erstes Video-Tutorial erstellt, in dem er erklärt, wie man sich mit Hilfe von Keyboard Maestro und nur einem Mausklick, einem Shortcut oder auch nur durch das Starten einer App in Accounts einloggen kann.

Damit dieses erste Tutorial problemlos funktioniert, muss 1Password mini allerdings ständig entsperrt sein. Ist es das nicht, was bei vielen Nutzern der Standardfall sein sollte, funktioniert das Makro nicht und man muss sich etwas Neues einfallen lassen. Das hat Alexander auch getan und mit Hilfe des Keyboard Maestro Forums eine Lösung gefunden, die auf nur einem einzigen AppleScript basiert 😲

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

on run
  set searchTerm to "icloud"

  tell application "System Events"
    set preClip to (the clipboard) as text
    set elements to every UI element whose creator type is "1Ph*"
    if elements is {} then
      log "1Password Mini is not running"
      return false
    end if
    set mini to (first item of elements)
    set miniName to short name of mini
    log miniName & " is running as " & name of mini
    set isLocked to my isOPMiniLocked(miniName)
    open location "x-onepassword-helper://search/" & searchTerm
    if isLocked then
      if not (my waitForUnlock(miniName, 10)) then
        return false
      end if
    end if
    tell its UI element (name of mini)
      set frontmost to true
      set i to 0
      repeat
        try
          if (focused of text field 1 of window 1) is true then
            tell text field 1 of window 1
              set value to searchTerm
              perform action "AXConfirm"
            end tell
            delay 1.0
            keystroke "c" using {command down, shift down}
            delay 0.5
            set thePass to (the clipboard) as text
            exit repeat
          end if
        end try
        delay 0.1
        set i to i + 1
        if i > 100 then
          return false
        end if
      end repeat
  
      tell application "App Store" to activate
      delay 0.5
      keystroke thePass
      key code 36
      set the clipboard to preClip
    end tell
  end tell
end run

on isOPMiniLocked(miniName)
  tell application "System Events"
    tell application process miniName
      perform action "AXPress" of menu bar item 1 of menu bar 1
      set isLocked to (subrole of text field 1 of window 1 is "AXSecureTextField")
      delay 0.1
      key code 53 -- Escape key to close 1PMini window
      if isLocked then
        log "1Password Mini is locked"
        return true
      end if
      log "1Password Mini is unlocked"
      return false
    end tell
  end tell
end isOPMiniLocked

on waitForUnlock(pProcessName, pMaxTimeSec)
  local startTime, elapTime, errMsg
  set startTime to current application's NSDate's |date|()
  log startTime
  tell application "System Events"
    repeat
      set elapTime to (-(round ((startTime's timeIntervalSinceNow()) * 100)) / 100.0)
      if (elapTime > pMaxTimeSec) then
        set errMsg to "Max Time of " & pMaxTimeSec & " seconds exceeded waiting for " & pProcessName
        log errMsg
        return false
      end if
      try
        set roleMode to (subrole of text field 1 of window 1) of (application process pProcessName)
        if roleMode is "AXSearchField" then
          return true
        end if
      end try
      delay 0.1
    end repeat
  end tell
end waitForUnlock

Ohne jetzt in die Tiefen des Codes einzusteigen, muss gesagt werden, dass dieses Skript nur bedingt universell verwendbar ist. Je nachdem in welche App man sich einloggen möchte, muss das AppleScript an zwei Stellen angepasst werden.

Zum einen direkt am Anfang bei der Suche nach dem in 1Password hinterlegten Login. Zum anderen bei der App, für die ein Login benötigt wird.

KM_Macro_Screenshot_2017-09-08 um 09.52.01_1300px

Ist nun alles gut?! Mitnichten, denn für Leute wie mich, die eines dieser neumodischen MacBook Pro mit Touch ID verwenden, funktioniert das AppleScript nicht; zumindest wenn man Touch ID zum Entsperren von 1Password verwendet.

Aber auch hier kamen Alexander und ich nach einigen Überlegungen zum Ziel: Keyboard Maestro hat nämlich den Vorteil, dass man Bedingungen an am Bildschirm angezeigte Fenster bzw. Grafiken knüpfen kann.

Somit ist das vorherige AppleScript jetzt in zwei Teile zerhackt, funktioniert aber auch mit Touch ID 😎

KM_Macro_Screenshot_2017-09-08 um 09.51.21_1300px 2

Auch hier gilt wieder: das Makro ist nicht universell verwendbar, sondern muss für jeden App-Login an drei Stellen angepasst werden. Zu den aus dem ersten AppleScript bekannten Stellen kommt jetzt noch eine Grafik hinzu, die den gefundenen Login in 1Password mini identifiziert.

Zum finalen Anzeigen bzw. Nutzen der verschiedenen Logins empfiehlt es sich auf die von Keyboard Maestro zur Verfügung gestellten globalen Makro Paletten zu setzen. Hier genügt dann im Endeffekt ein Mausklick und man ist in App X oder App Y eingeloggt.

Bildschirmfoto 2017-09-08 um 11.19.40

Um jetzt das ganze Prozedere besser nachverfolgen und auch live in Aktion sehen zu können, hatte Alexander vor ein paar Tagen ein zweites Video erstellt, das das erste Tutorial ergänzt bzw. aktualisiert.

Viel Spaß beim Anschauen 📼

youtube/watch?v=_WVz_Oq4sAE

Die beiden hier vorgestellten Makros können übrigens hier heruntergeladen werden.

Permalink

Ein Zwischenfazit: Apples Touch Bar

Als Apple letztes Jahr im Oktober die neuen MacBook Pro mit Touch Bar vorgestellt hatte, war meine Begeisterung recht groß. Erst recht, da in den gezeigten Demos der Keynote die Vorzüge dieses neuen Features recht gut dargestellt wurden. Eine gewisse Skepsis schwang dennoch mit.

Letztendlich siegte aber die Neugier und ich bin nach etlichen Wochen Wartezeit Ende November auf den (Touch Bar-)Zug aufgesprungen. Jetzt, knapp neun Monate später, soll ein erstes Fazit folgen.

Fakten

Gegenüber physischen Tasten hat die Touch Bar zwei entscheidenden Vorteile:

  • Sie ist sehr flexibel und passt sich immer wieder, je nachdem welche App gerade läuft, mit neuen Schaltflächen an. Mit den richtigen Tools kann man sogar eigene, komplett individuelle Touch Bars für seine Apps erstellen.
  • Dazu ist Touch ID ein sehr komfortabler Weg sich am Mac einzuloggen, Apps via iTunes bzw. Mac App Store zu kaufen oder Apps wie 1Password, Banking 4X u.a. zur Nutzung freizuschalten.

Bildschirmfoto 2017-08-09 um 22.01.28

Es gibt natürlich auch Nachteile:

  • Folgt man Apples Human Interface Guidelines, darf, abgesehen der Nutzung von Touch ID, keine Funktionalität exklusiv für die Touch Bar angeboten werden. Wäre auch doof, denn was machen all die älteren Macs ohne Touch Bar? Auf eine Funktion X in App Z verzichten? Wohl kaum.
  • Die Touch Bar gibt es bisher exklusiv nur für das MacBook Pro. Andere Macs oder auch externe Tastaturen sind bisher komplett außen vor. Durch die daraus folgende vergleichsweise kleine Nutzerschicht fehlt vermutlich vielen Entwicklern die Energie oder der Willen die Touch Bar ausreichend gut zu unterstützen und vor allem die Funktionalitäten zu warten. Der Aufwand ist im Vergleich zum Nutzen einfach zu hoch.
  • Durch Restriktionen von Apple gibt es für Entwickler derzeit keinen Weg die Touch Bar für einen eigenen Control Strip bzw. Hintergrund-Apps (siehe Keyboard Maestro) zu nutzen. Für Apple-eigene Funktionen und Apps (z.B. iTunes, Xcode…) ist es dahingegen möglich.
  • In der (Touch Bar-)Keynote vom Oktober 2016 wurde vor allem auf die komfortable und schnelle Bedienung in verschiedenen Arbeitsabläufen hingewiesen. Ist das wirklich so? Es mag mit Sicherheit einige Workflows geben, bei denen das tatsächlich so ist aber für die Masse muss man hier leider mit einem klaren nein antworten.
    • Zum einen fehlt ein fühlbares Feedback der einzelnen Tasten, das ein Nutzen der Touch Bar ohne hinzusehen unmöglich macht. Hatte ich bei meinem alten MacBook Air die Funktionstasten noch blind genutzt, muss ich jetzt, selbst zum Anpassen der Lautstärke, auf die Touch Bar schauen, um nicht aus Versehen irgendeine andere Funktion zu aktivieren. Bei der Masse der unterschiedlichen Touch Bars ist es auch schlichtweg unmöglich sich die unzähligen Positionen der Schaltflächen zu merken.
    • Zum anderen liegt der Hund bei den pro App verfügbaren Tastaturkürzeln begraben. Als großer Freund der Automatisierung von Arbeitsabläufen nehme ich eigentlich nur ungerne die Finger von der Tastatur. Hat man jetzt die nicht existenten exklusiven Features der Touch Bar und das zwingend notwendige Hinsehen beim Nutzen im Hinterkopf, kommt man schnell zu dem Schluss, dass hier gewisse Redundanzen vorliegen, von denen in Sachen Schnelligkeit die Touch Bar ziemlich oft an letzter Stelle steht. Denn selbst mit der Maus bzw. dem Trackpad erreiche ich Funktion X in der Regel schneller als über die Touch Bar.
    • Durch den teilweise sehr großen Umfang vieler Apps können viele Funktionen gar nicht in einer einzigen Touch Bar dargestellt werden. Die Lösung sind dann diverse “Unter-Touch-Bars”, die Funktionen quasi verschachtelt verfügbar machen. Auch das “Swipen” durch die Emojis nervt nach der dritten Nutzung eigentlich nur noch. Das hat zur Folge, dass man sich nicht selten in den verschiedenen Touch Bars einer App bzw. Funktion verliert; Lerneffekt hin oder her… Tastaturkürzel oder das Nutzen der Maus führt in der Regel schneller zum Ziel.

Bildschirmfoto 2017-08-09 um 22.02.37

Fazit

Ich will nicht sagen, dass die Touch Bar komplett sinnbefreit ist, gerade auch durch den Vorteil bei der Nutzung von Touch ID, aber das optimistischen Aufzeigen der Nutzung, welches Apple auf der Keynote suggeriert hat, bleibt bisher deutlich hinter den Erwartungen zurück.

Touch Bar Bild 2017-08-07 um 13.05.18_1300px.png

Ich weiß auch nicht so recht woran das liegt. Sind es die Entwickler, die die Touch Bar eher stiefmütterlich behandeln? Ist Apple die Ursache, da die Möglichkeiten der Nutzung zu sehr einschränkt sind oder bin ich es gar selber, da ich für den Umstieg von physischen auf digitale Tasten einfach zu alt bin?!

Ich persönlich nutze die Touch Bar, von anfänglichen Spielereien abgesehen, mittlerweile nur noch sehr eingeschränkt. Zu 90 oder 95% meiner Zeit am Mac ist eine mit BetterTouchTool selbst erstellte Touch Bar sichtbar, die grundlegende Funktionen wie einen Escape-Knopf, App Switcher und Lautstärkeregler sowie die Akkurestlaufzeit und Uhrzeit anzeigt. Aber selbst das ist hat nur einen Showroom-Charakter und soll interessierten Kollegen außerhalb des Apple-Universums beim mir über die Schulter schauen mal etwas Neues zeigen. Denn cool sieht die Touch Bar definitiv aus. Der praktische Nutzen darf durchaus infrage gestellt werden.

Touch Bar Bild 2017-08-07 um 17.18.28_1300px.png

Schlussendlich muss man bei Apple das ganze Konzept der Touch Bar in Frage stellen, da es bisher weder praktisch noch schnell zu nutzen ist. Hinzu kommt, dass mit macOS 10.13 High Sierra keine großartigen Veränderungen zu erwarten sind.

Apple muss hier dringend ansetzen, ansonsten wird die Touch Bar früher oder später in der Versenkung verschwinden; zumal es ja auch eine preisliche Frage ist. Möchte man wirklich 100 oder 150 Euro mehr für das Vorhandensein einer Touch Bar ausgeben? Ich kann die Frage aktuell nur mit nein beantworten.

(inspired by)

Permalink

Welcome to Dongleland

Gute vier Wochen Warten fanden heute Mittag ein jähes Ende: DHL (Express) hat endlich geliefert…

20161130_131300

Konfiguration

  • 13 Zoll MacBook Pro mit Touch Bar in Space Grau
  • 2,9 GHz Dual Core Intel Core i5 Prozessor
  • 16 GB RAM
  • 512 GB SSD
  • AppleCare Protection Plan

Der Lieferweg (laut DHL Tracking)

Eindhoven > Amsterdam > Leipzig > Hannover > Braunschweig

Bildschirmfoto 2016-11-30 um 14.47.62-minishadow

Ersteindruck

Ein edles Stück Hardware hat Apple da konstruiert!

Aus Zeitmangel habe ich bisher nur den Administrator und meinen Standard-Nutzer eingerichtet. Mehr ist derzeit auch nicht so richtig möglich, da Apple den passenden USB-C-auf-USB-Adapter zum Einspielen meines Backups (zumindest Teilen davon) erst morgen liefert. Natürlich!

Nachfolgend noch einige Bilder vom Unboxing inkl. Größenvergleich zu meinem bisherigen 11 Zoll MacBook Air. Hier merkt man übrigens sehr deutlich, was ein schmaler Rand beim Display ausmacht. In der Breite unterscheiden sich beide Geräte um gerade mal ein paar Millimeter, was ich persönlich schon erstaunlich finde.

20161130_13173520161130_13393320161130_13410320161130_13293520161130_132601

Permalink

macOS Tipp: PAM Modul zur Authentifizierung von Terminal Kommandos mit Touch ID

Bei den neuen MacBook Pro ist in der Touch Bar ja auch ein Touch ID Sensor zur Erkennung des Fingerabdrucks verbaut.

Dass man dieses Feature neben dem eigentlichen (Rechner-)Login oder Apple Pay auch für systembasierte Dinge nutzen kann, zeigt Entwickler Hamza Sood.

screenshot-minishadow

Er hat ein PAM (Pluggable authentication module) Modul entwickelt, das es Nutzern (oder besser gesagt Power-Usern, die genau wissen was sie tun) erlaubt die Touch ID Authentifizierung für Terminal Kommandos wie sudo zu nutzen.

Installations- und Konfigurationsanweisungen sind bei GitHub zu finden.

-> https://github.com/hamzasood/pam_touchid

(via)

Permalink

Touch ID und die trügerische Sicherheit

Apples Touch ID ist zum Anmelden bei Apps ist eine sehr komfortable Geschichte. Es vergeht seit der Veröffentlichung von iOS 8, mit dem Touch ID für 3rd Party Apps verfügbar wurde, kaum eine Woche, in der nicht irgendein anderer Entwickler mit der Integration dieses Features in seiner App hausieren geht.

Doch wie sieht es mit der Sicherheit von Touch ID, fernab der hinlänglich bekannten Sicherheitsprobleme, die bei der Verwendung eines Fingerabdrucks entstehen, aus?!

2014-11-03_12h42_57

Andreas Kurtz beschäftigt sich in seinem Blogeintrag ausgiebig mit diesem Thema und zeigt am Beispiel der Dropbox App welch trügerische Sicherheit Apple mit dem Local Authentication Framework, einer API, die Apple zur Verwendung von Touch ID den Entwicklern zur Verfügung stellt, dem Nutzer vorgaukelt.

Since I first heard about this new framework, I have questioned its usefulness. Ultimately, Local Authentication becomes only important when an unlocked device falls into the wrong hands. Than Local Authentication is designed to ensure that, when an app is launched, an additional login screen is displayed to prevent access to the app’s contents. However, in this very moment it is still possible, e.g., to directly access all app data via the USB interface (for example, by creating a backup). After all, the device is already unlocked (otherwise you wouldn’t need Local Authentication).

Ähnliche Sicherheitsbedenken hat auch die Subsembly GmbH aus München, die erst letzte Woche Touch ID in ihre großartige Online-Banking App Banking 4i integriert hatte. Wie auf der Facebook-Seite des Entwicklers zu lesen, ist man mit Apples Umsetzung des Local Authentication Frameworks unzufrieden, hat aber dennoch über einen sogenannten Zweitschlüssel einen Weg gefunden, der das eigentliche Passwort zum Entsperren der App nicht lokal auf dem iPhone oder iPad speichert.

Die übliche, von Apple empfohlene Vorgehensweise für die Implementierung von Touch ID sieht vor, dass das mit Touch ID zu schützende Passwort einfach im Schlüsselbund auf dem Gerät gespeichert wird. Unser Grundprinzip, das Passwort niemals irgendwo in irgendeiner Weise zu speichern wäre damit gebrochen. Nun kann man argumentieren, dass der Schlüsselbund in iOS sehr sicher ist, und die Speicherung des Passworts im Schlüsselbund deshalb kein Risiko darstellt. Ich glaube das nicht. So kann zum Beispiel ein “trojanisches Pferd” auf einem iPhone mit Jail-Break den Schlüsselbund einfach auslesen.

-> iOS 8 Touch ID Authentication API
-> Touch ID in Banking 4i