2012-11-22 37 views
14

Chúng tôi có một 2.0 Môi trường ADFS được sử dụng để liên hiệp miền Active Directory của chúng tôi với Office 365.Nhận ADFS Mã trong Powershell

Gần đây chúng tôi đã có một vấn đề mà các cụm ngừng đáp ứng do đó đã phá vỡ truy cập email/lịch cho tất cả người dùng của chúng tôi. Vì hiện tại chúng tôi không có bất kỳ giám sát nào cho ADFS nên tôi đang cố gắng viết một kịch bản PowerShell định kỳ sẽ xác thực vào nhóm ADFS của chúng tôi và nhận được một mã thông báo hợp lệ tương tự như kiểm tra SSO tại testexchangeconnectivity.com.

Dường như token là thực sự do

/ADFS/dịch vụ/tín nhiệm/2005/usernamemixed

nhưng bất cứ khi nào tôi cố gắng chạy gọi-WebRequest hoặc mới Webservice ủy quyền chống lại URI này và cung cấp thông tin đăng nhập AD địa phương tôi nhận được lỗi yêu cầu 400 lỗi.

Tôi phải làm gì để yêu cầu mã thông báo chính xác từ điểm cuối này?

Trả lời

0

Về cơ bản, bạn sử dụng WSTrustChannelFactory, tạo kênh và chuyển nó một RequestSecurityToken.

Leandro có một tốt đẹp, súc tích sample

Bạn sẽ cần phải cài đặt Windows nhận dạng Foundation (WIF) nếu bạn không sử dụng .NET 4.5.

0

Tôi làm việc trên sản phẩm thực hiện xác thực liên kết bằng WS-Federation và WS-Trust. Tôi tin rằng trường hợp của bạn là một phần của quy trình làm việc của chúng tôi.

Trong những năm qua, tôi đã phát triển tự động hóa PowerShell dựa trên API dựa trên SOAP của chúng tôi và tại một số điểm, tôi củng cố kiến ​​thức đó thành mô-đun WcfPS có sẵn trên thư viện.

code cho mô-đun là nguồn mở và mặc dù trong kịch bản, nó phụ thuộc rất nhiều vào các lớp .net và các hội đồng khung từ các cụm System.ServiceModelSystem.IdentityModel. Tôi đề cập đến điều này bởi vì hầu hết các apis bên trong những hội đồng không có sẵn từ tiêu chuẩn .NET 2, do đó, các mô-đun không may sẽ không hoạt động hệ điều hành cửa sổ không. Bạn cũng có thể đọc thêm về nó trong bài viết của tôi WCFPS - PowerShell module to work with SOAP endpoints.

Đây là ví dụ nơi bạn có thể tạo mã thông báo đối xứng và mang theo tùy thuộc vào yêu cầu của nhà cung cấp dịch vụ và dựa vào cấu hình của bên. Mã này yêu cầu sự hiểu biết cơ bản về luồng bảo mật, thiết lập và thuật ngữ liên kết.

# Define the ADFS MEX uri 
$adfsMexUri="https://adfs.example.com/adfs/services/trust/mex" 

#region Define authentication endpoints. One for windows and one with username/password 
$windowsMixed13AuthenticationEndpoint="https://adfs.example.com/adfs/services/trust/13/windowsmixed" 
$usernamePasswordMixed13AuthenticationEndpoint="https://adfs.example.com/adfs/services/trust/13/usernamemixed" 
#endregion 

#region Define service providers for which we want to issue a symmetric and a bearer token respectively 
# Symmatric is for SOAP, WS-Trust 
# Bearer is for Web, WS-Federation 
$soapServiceProviderAppliesTo="https://myserviceprovider/Soap/" 
$webServiceProviderAppliesTo="https://myserviceprovider/Web/" 
#endregion 

# Parse the MEX and locate the service endpoint 
$issuerImporter=New-WcfWsdlImporter -Endpoint $adfsMexUri 

#region Issue tokens with windows authentications 
$issuerEndpoint=$issuerImporter | New-WcfServiceEndpoint -Endpoint $windowsMixed13AuthenticationEndpoint 
$soapToken=New-SecurityToken -Endpoint $issuerEndpoint -AppliesTo $soapServiceProviderAppliesTo -Symmetric 
$webToken=New-SecurityToken -Endpoint $issuerEndpoint -AppliesTo $webServiceProviderAppliesTo -Bearer 
#endregion 

#region Issue tokens with username/password credentials 
$credential=Get-Credential 
$issuerEndpoint=$issuerImporter | New-WcfServiceEndpoint -Endpoint $usernamePasswordMixed13AuthenticationEndpoint 
$soapToken=New-SecurityToken -Endpoint $issuerEndpoint -Credential $credential -AppliesTo $soapServiceProviderAppliesTo -Symmetric 
$webToken=New-SecurityToken -Endpoint $issuerEndpoint -Credential $credential -AppliesTo $webServiceProviderAppliesTo -Bearer  
#endregion 
Các vấn đề liên quan