5

WebSphere (truyền thống): Trong trường hợp của container xác thực dựa với custom user registry, khi đăng nhập từ một ứng dụng web thất bại, chúng tôi sử dụng để tìm nguyên nhân gốc rễ của sự thất bại bằng cách gọi:API nào cần gọi trong WebSphere (Liberty) vì nguyên nhân gốc rễ của việc không đăng nhập bằng cách sử dụng đăng ký người dùng tùy chỉnh?

com.ibm.websphere.security.auth.WSSubject.getRootLoginException();

Trên đây API tồn tại: {} Server_Root_Dir /AppServer/plugins/com.ibm.ws.runtime_x.yzjar

các dịch ngược mã nguồn của phương pháp getRootLoginException() là:

public static Throwable getRootLoginException(){ 
    return ContextManagerFactory.getInstance().getRootException(); 
} 

WebSphere (Liberty): Trong trường hợp của container xác thực dựa với custom user registry, chúng tôi không thể tìm thấy nguyên nhân gốc rễ của sự thất bại của đăng nhập bằng cách gọi:

com.ibm.websphere.security.auth.WSSubject.getRootLoginException();

API trên tồn tại trong: {Server_Root_Dir} /lib/com.ibm.websphere.security_x.yzjar

Đó là do mã nguồn đã giải mã của phương thức getRootLoginException() là:

public static Throwable getRootLoginException(){ 
    return null; 
} 

Nhưng trong https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/com/ibm/websphere/security/auth/WSSubject.html

IBM tuyên bố rằng:

public static java.lang.Throwable getRootLoginException()

phương pháp thuận tiện này trả về ngoại lệ đăng nhập root bắt trong mô-đun đăng nhập hệ thống, nếu có.

Nó sẽ trích xuất ngoại lệ từ chuỗi hiện tại. Bạn sẽ nhận được mô-đun đăng nhập nào nhìn thấy dưới dạng ngoại lệ gốc. Đây có thể là một ngoại lệ lồng nhau . Bạn có thể cần trích xuất ngoại lệ từ trường hợp ngoại lệ trả lại cho đến khi bạn nhận được ngoại lệ gốc thực sự.

Returns: Một Throwable có chứa ngoại lệ đăng nhập root. Nếu một ngoại lệ đăng nhập không xảy ra, null sẽ được trả về.

Tôi muốn biết API cần gọi trong WebSphere (Liberty) để tìm nguyên nhân gốc rễ của lỗi đăng nhập.

Tại sao WSSubject.getRootLoginException() là cần thiết:

Việc thực hiện tùy chỉnh của com.ibm.websphere.security.UserRegistry yêu cầu bạn xác nhận tên người dùng và mật khẩu nhập vào bởi người sử dụng ứng dụng web bằng cách cung cấp định nghĩa của riêng bạn checkPassword(String userSecurityName, String passwd). Vui lòng xem http://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/csec_customauth.html

Nếu người dùng cung cấp thông tin không chính xác bạn có thể ném PasswordCheckFailedException hoặc CustomRegistryException bằng tin nhắn của bạn.checkPassword(String userSecurityName, String passwd) này thực sự được gọi bởi WebSphere (truyền thống hoặc Liberty) từ JAAS javax.security.auth.spi.LoginModule.login()PasswordCheckFailedException hoặc CustomRegistryException và thư của chúng được gói và javax.security.auth.login.LoginException được ném.

Để cung cấp phản hồi cho người dùng ứng dụng web, chúng tôi cần lưu giữ ngoại lệ được ném từ javax.security.auth.spi.LoginModule.login(). Cách thực hiện việc này là gọi số com.ibm.websphere.security.auth.WSSubject.getRootLoginException() từ bộ lọc servlet. Điều này làm việc tốt trong WebSphere (truyền thống) nhưng không hoạt động nhiều trong WebSphere (Liberty). Vấn đề là IBM đã không ghi lại giới hạn này ở bất cứ đâu.

+0

bạn muốn biết điều gì từ ngoại lệ gốc? –

+0

Vui lòng xem phần 'Tại sao cần có WSSubject.getRootLoginException()'. –

Trả lời

-1

Trong WAS truyền thống, điều này đã được giải quyết là APAR PM21010 một thời gian dài trước đây. Bạn có thể muốn gửi một PMR, đặc biệt là từ Brian found rằng điều này được ghi nhận là một API được hỗ trợ trong Hồ sơ WebSphere Liberty.

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