irma server library
irmaserver
is a Go library providing a HTTP server that handles IRMA session with the Yivi app, and functions for starting and managing IRMA sessions.
Installing
go get github.com/privacybydesign/irmago
Configuring
The server is configured by passing a server.Configuration
instance to irmaserver.New()
. For the options and their meaning, see Godoc.
Users are encouraged to provide an email address with the Email
option in the server.Configuration
struct, subscribing for notifications about changes in the IRMA software or ecosystem. More information.
Example
package main
import (
"github.com/privacybydesign/irmago/server"
"github.com/privacybydesign/irmago/server/irmaserver"
"net/http"
"fmt"
"encoding/json"
)
func main() {
configuration := &server.Configuration{
// Replace with address that Yivi apps can reach
URL: "http://localhost:1234/irma",
}
err := irmaserver.Initialize(configuration)
if err != nil {
// ...
}
http.Handle("/irma/", irmaserver.HandlerFunc())
http.HandleFunc("/createrequest", createFullnameRequest)
// Start the server
fmt.Println("Going to listen on :1234")
err = http.ListenAndServe(":1234", nil)
if err != nil {
fmt.Println("Failed to listen on :1234")
}
}
func createFullnameRequest(w http.ResponseWriter, r *http.Request) {
request := `{
"type": "disclosing",
"content": [{ "label": "Full name", "attributes": [ "pbdf.nijmegen.personalData.fullname" ]}]
}`
sessionPointer, token, err := irmaserver.StartSession(request, func (r *server.SessionResult) {
fmt.Println("Session done, result: ", server.ToJson(r))
})
if err != nil {
// ...
}
fmt.Println("Created session with token ", token)
// Send session pointer to frontend, which can render it as a QR
w.Header().Add("Content-Type", "text/json")
jsonSessionPointer, _ := json.Marshal(sessionPointer)
w.Write(jsonSessionPointer)
}
See also
- The Go library
requestorserver
wraps the functions that this library exposes for starting and managing IRMA sessions into HTTP endpoints. - The
irma server
command wrapsrequestorserver
into an executable. - The client corresponding to this server is implemented by the IRMA mobile app.