SAMLを使用したシングルサインオンを可能にするGoベースのWebサーバー(Azureで実行)を構築しようとしています。アプリケーションの基準の一部は、アクセスの2つのレイヤーがあることです。まず、ユーザーがWebページ自体にアクセスできるかどうかを判断し、次に、ユーザーは、表示する権利があるデータにのみアクセスできるようにします。GoでSAML応答からユーザー名を取得
godocにリストされているライブラリを調べましたが、2番目の基準を実装する方法が見つからないようです。 SAML応答に関連付けられたユーザー名/ IDをデータベースクエリの一部として使用したいと考えています。私はこの情報をどこで見つけることができるのか分かりません。私は
http.Handle("/apicall", samlSP.RequireAccount(http.HandlerFunc(foo)))
func foo(w http.ResponseWriter, r *http.Request) {
user := // ?
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err)
}
var filter FilterParameters
err = json.Unmarshal(body, &filter)
if err != nil {
log.Println(err)
}
apiStruct := API(filter, user)
json.NewEncoder(w).Encode(apiStruct)
}
ような何かをしなければならないように現時点では、それはそうですが、私は正しいスコープで満たされた変数「ユーザー」を取得する方法を確認していない、と私はどこからこの情報を取得することができます。私はgithub.com/crewjam/samlを利用しようとしていましたが、私は別のソリューションに切り替えて柔軟に対応しています。 godocは 'options'構造体のポインタを 'saml.EntityDescriptor'構造体に記述していますが、これはユーザー名のフィールドを含んでいるようですが、これがうまくいくかどうかわかりません。私の関数 "foo"。
ありがとう、これが正しい方向に私をプッシュしました!私が今、ミドルウェア受信機を持つRequireAccountのような機能を理解している限り、クレームから属性を追加することによってhttp.Requestを変更してください。私はこれを試してみましょう。 – Dylan