2013-08-27 41 views
15

Vấn đềHaskell xác thực ứng dụng desktop độc lập (sử dụng google/facebook/twitter/etc tài khoản)

Tôi đang viết một ứng dụng desktop độc lập trong Haskell và tôi rất thích có một hỗ trợ xác thực trong nó . Tôi muốn người dùng có thể đăng nhập vào ứng dụng này bằng tài khoản google/facebook/etc.

Một số nghiên cứu

Tôi đã tìm thấy một số giao thức và thư viện Haskell liên quan:

  • OpenID (openid, authenticate) - nhưng như @Changaco đã lưu ý - giao thức này được kết nối với web trình duyệt.
  • OAuth (authenticate-oauth, hoauth) - nhưng là người đầu tiên dường như liên quan chặt chẽ đến Yesod (khuôn khổ web) và lần thứ hai hỗ trợ OAuth phiên bản 1.0 (hiện tại có phiên bản 2.0 sẵn)

Các Câu hỏi

Có thể tạo xác thực như vậy trong ứng dụng Haskell độc lập không? Tôi nên sử dụng thư viện nào? Hoặc có lẽ tôi nên viết nó trong C + + và sử dụng nó từ Haskell?

Các yêu cầu chính là:

  1. Cơ chế xác thực nên làm việc trong ứng dụng độc lập trên tất cả các nền tảng lớn (Linux, Windows, Darwin)
  2. Cơ chế xác thực nên làm việc với ứng dụng mà không gui.
+1

Ý của bạn là gì với "độc lập"? Ứng dụng dành cho máy tính để bàn hoặc ứng dụng web mà không sử dụng khung công tác? – firefrorefiddle

+0

xác thực cũng được Yesod sử dụng làm một trong các tùy chọn xác thực có thể có. Xem http://hackage.haskell.org/packages/archive/yesod-auth/1.2.1/doc/html/Yesod-Auth-OpenId.html. – Laar

+0

@MikeHartl: Tôi đang nói về ứng dụng máy tính để bàn độc lập. (cố định trong câu hỏi) –

Trả lời

5

Original câu trả lời

OpenID hoạt động bằng cách gửi người dùng đến trang web của nhà cung cấp của nó và sau đó chuyển hướng nó trở lại "dựa" trang web (cf OpenID spec). Quá trình này yêu cầu trình duyệt web, do đó bạn phải tích hợp một trình duyệt vào ứng dụng của mình hoặc mở một ứng dụng. Trong trường hợp thứ hai, bạn cũng cần một cách để có được kết quả của quá trình xác thực, hoặc bằng cách yêu cầu người dùng sao chép-dán nó hoặc bằng cách chạy một máy chủ web trên localhost.


câu trả lời thứ hai sau khi cập nhật câu hỏi

  1. Cơ chế xác thực nên làm việc trong ứng dụng độc lập trên tất cả các nền tảng lớn (Linux, Windows, Darwin)
  2. Cơ chế xác thực nên làm việc với ứng dụng mà không cần gui.

Nếu không có GUI, giải pháp tốt nhất có thể là chỉ nhắc người dùng nhập mật khẩu của mình. OpenID và OAuth 1.0 không hỗ trợ trường hợp sử dụng này, nhưng OAuth 2.0 does.authenticate-oauth và hoauth không hỗ trợ giao thức 2.0, nhưng có một hoauth2 package.


câu trả lời thứ ba sau khi biết thêm chi tiết được đưa ra trong các ý kiến ​​

Người dùng sẽ được phép tạo accunt trong một dịch vụ web (và đăng nhập bằng google exisitng/(vv) chiếm). Anh ta cũng sẽ có khả năng tải xuống ứng dụng độc lập, sau khi thực thi sẽ nhắc anh ta đăng nhập - để đồng bộ hóa cài đặt, tài khoản, v.v.

Trong trường hợp đó, tôi nghĩ giải pháp đơn giản nhất là tạo một khóa ứng dụng duy nhất "cho mỗi người dùng. Sau đó, anh ta có thể nhập tên người dùng và khóa ứng dụng của mình vào ứng dụng độc lập để tự xác thực với trang web của mình. Phương pháp này tránh yêu cầu anh ta cho mật khẩu Google/etc của anh ấy, mà anh ấy có thể không biết liệu anh ấy có sử dụng trình quản lý mật khẩu hay không.

+0

Ok, cảm ơn bạn rất nhiều! Bạn đúng - tôi đã nghĩ, rằng OpenID là một giao thức rất chung chung. Tôi chỉ muốn tạo một cơ chế xác thực cho ứng dụng độc lập của mình, nó sẽ cho phép người dùng đăng nhập bằng các tài khoản gmail (v.v) hiện có của họ. Tôi đã cập nhật câu hỏi để mô tả tốt hơn vấn đề. –

+0

Additonal Tôi đã phát hiện ra, có lẽ nó có thể sử dụng OpenID với các ứng dụng máy tính để bàn độc lập: http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid –

Các vấn đề liên quan